如何让我的Rust程序链接到另一个glibc?

时间:2017-01-27 18:50:02

标签: linker rust cross-compiling glibc

我有crosstool-ng i686-linux-unknown-gnu工具链,此工具链包含与我主机中安装的glibc不同的glibc。

libc.so.6的路径是:

~/x-tools/i686-unknown-linux-gnu/i686-unknown-linux-gnu/sysroot/lib

如何告诉Cargo链接到位于此目录而不是系统目录中的glibc?

我已经尝试LD_LIBRARY_PATH,但它不起作用。

在我的.cargo/config文件中设置此内容:

[target.i686-unknown-linux-gnu]
linker = "i686-unknown-linux-gnu-gcc"

但这将我的程序与GCC工具链而不是Clang联系起来。我想使用Clang,只是链接一个不同的glibc。

1 个答案:

答案 0 :(得分:2)

正如kennytm指出的那样,我可以使用.cargo/config通过glibc参数告诉新sysroot的位置:

[target.i686-unknown-linux-gnu]
rustflags = ["-C", "link-args=--sysroot=/home/ebarreto/x-tools/i686-unknown-linux-gnu/i686-unknown-linux-gnu/sysroot"]

--sysroot参数将包含我的sysroot的路径,其中包含自定义glibc

我仍然认为这不是最实用的方法,但我不知道更好的方法..