Yax*_*lat 7 linux windows cross-compiling rust rust-cargo
我有一个基本的 rust/cargo 项目,它有一个主文件和一些基本的依赖项。cargo build当未指定目标时,该命令可以正常工作(我使用的是 Windows,因此它会构建到 Windows),但是当我尝试使用cargo build --target=x86_64-unknown-linux-gnuor将程序交叉编译到 linux 时cargo build --target=x86_64-unknown-linux-musl,该过程失败并出现以下错误:linker 'cc' not found.
有谁知道如何解决这个问题?我需要安装特定的链接器吗?
谢谢。
我刚刚想通了。
事实证明,您需要告诉货物使用 LLVM 链接器。为此,您可以.cargo在基本目录中创建一个名为的新目录,然后config.toml在此目录中创建一个新文件。您可以在此处添加以下行:
[target.x86_64-unknown-linux-musl]
rustflags = ["-C", "linker-flavor=ld.lld"]
Run Code Online (Sandbox Code Playgroud)
然后使用命令构建cargo build --target=x86_64-unknown-linux-musl应该可以工作!
这篇文章总结了 Yaxlat 和 Rory Sullivan 的两个回复 - 谢谢你们:
在基目录中新创建的目录 .cargo 中创建一个名为 config.toml 的文件。
该文件包含以下内容:
[target.x86_64-unknown-linux-musl]
linker = "rust-lld"
Run Code Online (Sandbox Code Playgroud)
在终端输入这两条命令
rustup target add x86_64-unknown-linux-musl
cargo build --target=x86_64-unknown-linux-musl
Run Code Online (Sandbox Code Playgroud)
Linux 的可执行二进制文件现在位于目标目录中。