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

4
我有一个针对i686-linux-unknown-gnucrosstool-ng工具链,其中包含与我的主机上安装的glibc不同的glibc版本。
我的libc.so.6路径是:
~/x-tools/i686-unknown-linux-gnu/i686-unknown-linux-gnu/sysroot/lib

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

我已经尝试过LD_LIBRARY_PATH,但它没有起作用。

有效的方法是在我的.cargo/config文件中设置:

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

但这将把我的程序与GCC工具链链接起来,而不是Clang。我想使用Clang,并只链接到不同的glibc。


1
你尝试过在.cargo/config中更改rustflags吗? - kennytm
你可能想在/r/rust(Reddit)上发布这个问题,那里有几个用户进行交叉编译,其中选择另一个libc是必要的,因此他们可能对如何最好地完成此操作有很好的掌握。 - Matthieu M.
1个回答

3
正如kennytm指出的那样,我可以使用.cargo/config文件,并使用sysroot参数告诉程序新的glibc的位置。
[target.i686-unknown-linux-gnu]
rustflags = ["-C", "link-args=--sysroot=/home/ebarreto/x-tools/i686-unknown-linux-gnu/i686-unknown-linux-gnu/sysroot"]
< p > < code >--sysroot< /code >参数将包含我的sysroot路径,其中包含自定义的< code >glibc< /code >。< /p > < p >我仍然认为这不是最实用的方法,但我不知道更好的方法...< /p >

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接