rust - 当从 Xcode 8 内部运行时,由于信号 10, cargo 无法与 `cc` 链接

标签 rust rust-cargo

我在 Xcode 8 中的 macOS 应用程序中运行 cargo 时遇到了一个奇怪的错误:

Eonil$ cargo clean
[~/Temp/repotest1/ag] (master)
Eonil$ cargo build
   Compiling ag v0.1.0 (file:///Users/Eonil/Temp/repotest1/ag)
error: linking with `cc` failed: signal: 10
  |
  = note: "cc" "-m64" "-L" "/Users/Eonil/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib" "/Users/Eonil/Temp/repotest1/ag/target/debug/ag.0.o" "-o" "/Users/Eonil/Temp/repotest1/ag/target/debug/ag" "-Wl,-dead_strip" "-nodefaultlibs" "-L" "/Users/Eonil/Temp/repotest1/ag/target/debug/deps" "-L" "/Users/Eonil/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib" "/Users/Eonil/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libstd-f5a209a9.rlib" "/Users/Eonil/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libpanic_unwind-f5a209a9.rlib" "/Users/Eonil/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libunwind-f5a209a9.rlib" "/Users/Eonil/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/librand-f5a209a9.rlib" "/Users/Eonil/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libcollections-f5a209a9.rlib" "/Users/Eonil/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/librustc_unicode-f5a209a9.rlib" "/Users/Eonil/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/liballoc-f5a209a9.rlib" "/Users/Eonil/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/liballoc_jemalloc-f5a209a9.rlib" "/Users/Eonil/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/liblibc-f5a209a9.rlib" "/Users/Eonil/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libcore-f5a209a9.rlib" "/Users/Eonil/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libcompiler_builtins-f5a209a9.rlib" "-l" "System" "-l" "pthread" "-l" "c" "-l" "m"
  = note: 

error: aborting due to previous error

error: Could not compile `ag`.

To learn more, run the command again with --verbose.

为什么会出现此错误以及如何解决此问题?

  • cargo 0.15.0-nightly (298a012 2016-12-20)
  • rustc 1.14.0 (e8a012324 2016-12-16)

最佳答案

环境变量 MallocNanoZone 设置为 1。将其删除或将其设置为 0,问题就会神奇地消失。

我不知道为什么会这样。在我的例子中,错误是在使用 NSTask 在 Xcode 调试上下文中运行 cargo 时发生的。 Xcode自动设置MallocNanoZone=1,改变了一些对cargo执行不友好的内存管理行为。

关于rust - 当从 Xcode 8 内部运行时,由于信号 10, cargo 无法与 `cc` 链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42601406/

相关文章:

json - 使用 serde 和 csv crate 将嵌套的 json 对象序列化为 csv

rust - 在 Cargo.toml 中添加工作区开发依赖项的正确方法是什么?

rust - 为什么 serde_json::to_writer 不需要它的参数是 `mut` ?

rust - 如何将 Rust 闭包转换为 C 风格的回调?

rust - 如何用泛型解决分支中类型不兼容的问题

arrays - 如何将一个 800 行 25 列的文件存储在一个 N 维数组中?

rust - 我可以使用单个 Cargo.toml 指定存储库结构,但可以使用多个版本的代码,每个版本都有单独的 main.rs 文件吗?

bash - 如何完成 rustup/cargo 命令?

testing - 如何找到用于 cargo 测试的资源?

rust - 当 `cargo install` 由于系统配置问题而失败时,如何避免重建依赖项?