我想找到在 Rust 构建中使用的 libc.so 文件,以便我可以使用--version
. (一些 libcs 通过 C 宏公开他们的版本信息,因此他们的替代方法是cc
在构建脚本中使用 crate。但像 musl 这样的其他人不这样做。)
我可以弄清楚libstd-*.so
rust 二进制文件或库将链接到哪个文件。当它libstd.so
与主机的 libc 链接时,在其上运行ldd
会显示libc.so
. 但是当主机系统使用 glibc 并且目标环境是 musl 时,这不起作用(“无效的 ELF 标头”)。代替,ldd
我可以使用readelf -d
或objdump -p
。libstd.so
但是这些只显示它使用的文件的文件名,libc.so
而不是它的完整路径。这libc.so
不在LD_LIBRARY_PATH
. (我确实知道它在我自己的系统上的位置,但我正试图以编程方式在任意系统上找到它。)
运行ldconfig -p
只为我提供有关主机系统的 libc 的信息。
如果有一个 rustc 相当于 gcc 和 clang 的-print-file-name=libc.so
,那就太好了,这样我就可以做类似rustc --target=$TARGET --print-file-name=libc.so
.
关于如何获取此信息的其他想法?