diff --git a/packages/cli/src/build/request.rs b/packages/cli/src/build/request.rs index 6d2d107055..62307d3f9d 100644 --- a/packages/cli/src/build/request.rs +++ b/packages/cli/src/build/request.rs @@ -1605,6 +1605,13 @@ impl BuildRequest { let bytes = out_ar.into_inner().context("Failed to finalize archive")?; std::fs::write(&out_ar_path, bytes).context("Failed to write archive")?; tracing::debug!("Wrote fat archive to {:?}", out_ar_path); + + // Run the ranlib command to index the archive. This slows down this process a bit, + // but is necessary for some linkers to work properly. + // We ignore its error in case it doesn't recognize the architecture + if let Some(ranlib) = self.select_ranlib() { + _ = Command::new(ranlib).arg(&out_ar_path).output().await; + } } compiler_rlibs.dedup(); @@ -3961,4 +3968,11 @@ r#"