【问题标题】:How can I make my Rust program link to another glibc?如何让我的 Rust 程序链接到另一个 glibc?
【发布时间】:2017-06-13 13:13:50
【问题描述】:

我有一个用于i686-linux-unknown-gnucrosstool-ng 工具链,该工具链包含的 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。

【问题讨论】:

  • 您是否尝试过更改.cargo/config 中的rustflags
  • 您可能想在 /r/rust (Reddit) 上交叉发布问题,那里有几个用户进行交叉编译,其中必须选择另一个 libc,所以他们可能有一个很好的掌握如何最好地做到这一点。

标签: rust linker cross-compiling glibc rust-cargo


【解决方案1】:

正如 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"]

--sysroot 参数将包含指向我的 sysroot 的路径,自定义 glibc 所在的位置。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    • 2021-04-28
    • 2023-02-01
    • 2014-05-13
    • 2021-06-19
    • 1970-01-01
    相关资源
    最近更新 更多