根据交叉编译 Rust 的各种指南,我需要在以下位置设置类似的内容.cargo/config:
[target.x86_64-unknown-linux-musl]
linker = "x86_64-linux-musl-gcc"
Run Code Online (Sandbox Code Playgroud)
就我而言,我是在 Mac 上对 Linux 进行交叉编译。这很好,但我还希望能够在 Linux 上本地构建代码(即不是交叉编译)。在这种情况下,目标肯定仍然是x86_64-unknown-linux-musl,但我不想覆盖linker。
我想你可能可以使用自定义来做到这一点build.rs,但是有什么方法可以做到这一点吗.cargo/config?我以为你能够做这样的事情:
[target.'cfg(all(host_os = "macos", target_os = "linux"))']
linker = "x86_64-linux-musl-gcc"
Run Code Online (Sandbox Code Playgroud)
但没有host_os。
我猜你已经把它放在.cargo/config你的 Cargo 工作区里了?
如果是这种情况,您应该考虑将特定于主机的配置选项(例如target.{target}.linker)移至特定于用户的配置选项~/.cargo/config。这样,链接器就不会与工作区配置绑定,而是与用户绑定:不同主机上的不同用户可以为不同的目标配置不同的链接器。