我想让 rustclld
用作链接器,而不是ld
在特定的 crate 中。所以我.cargo/config
在我的项目目录中创建了以下内容:
[target.x86_64-unknown-linux-gnu]
linker = "ld.lld"
这会导致链接器错误:
$ cargo build
...
= note: ld.lld: error: unable to find library -ldl
ld.lld: error: unable to find library -lrt
ld.lld: error: unable to find library -lpthread
ld.lld: error: unable to find library -lgcc_s
ld.lld: error: unable to find library -lc
ld.lld: error: unable to find library -lm
ld.lld: error: unable to find library -lrt
ld.lld: error: unable to find library -lpthread
ld.lld: error: unable to find library -lutil
ld.lld: error: unable to find library -lutil
与rust-lld
. 如果我设置linker = "ld"
(这应该是默认值,对吗?),我会得到
= note: ld: cannot find -lgcc_s
我试图手动解决所有丢失的库(使用-C link-arg=--library-path=/usr/lib/x86_64-linux-gnu
等),但它只会导致错误的链接和段错误的二进制文件。
有趣的是,如果我/usr/bin/ld
用符号链接替换/usr/bin/ld.lld
,它会很好用(没有错误,从编译的二进制文件中我看到它确实与 链接lld
)。但是,我不想制作lld
系统范围的链接器,我只想在特定的 Rust crate 中使用它。
那么更改默认 rustc 链接器的正确方法是什么?