- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想找到在Rust构建中使用的libc.so文件,以便我可以使用--version
进行查询。 (一些libcs通过C宏公开其版本信息,因此,它们的另一种选择是在构建脚本中使用cc
条板箱。但其他诸如musl则不这样做。)
我可以弄清楚一个使用rust 的二进制文件或库将链接到哪个libstd-*.so
文件。当将此libstd.so
与主机的libc链接时,在其上运行ldd
将显示libc.so
。但是,当主机系统使用glibc且目标环境是musl时,这将不起作用(“无效的ELF header ”)。除了ldd
之外,我还可以在readelf -d
上使用objdump -p
或libstd.so
。但是这些仅显示其使用的libc.so
文件的文件名,而不显示其完整路径。而且libc.so
不在LD_LIBRARY_PATH
中的任何目录中。 (我确实知道它在我自己的系统上的位置,但是我试图以编程方式在任意系统上找到它。)
运行ldconfig -p
仅为我提供有关主机系统的libc的信息。
如果有一个与gcc和clang的-print-file-name=libc.so
等效的rustc,那就太好了,这样我就可以做类似rustc --target=$TARGET --print-file-name=libc.so
的事情。
关于如何获取此信息的其他想法?
最佳答案
您可以像这样将pass linker arguments转换为rustc
:
rustc -C link-args=...
libc.so
,我相信以下命令就足够了:
rustc -C link-args=-Wl,-t ...
-t
--trace
Print the names of the input files as ld processes them. ...
rustc
“吃掉了”链接器的输出。
echo 'fn main() { println!("")}' | rustc -C link-args=-Wl,-Map=map.out -o foo -
grep 'libc\.so' map.out
libc.so.6 /usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-f25e49a311b0f577.rlib(std-f25e49a311b0f577.std.cy8lhng1-cgu.2.rcgu.o) (setuid@@GLIBC_2.2.5)
LOAD /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/libc.so
LOAD /lib/x86_64-linux-gnu/libc.so.6
关于rust - 如何找到 `rustc --target=$TARGET`链接到哪个libc.so?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61423973/
我正在开发一个 voip 调用应用程序。我需要做的是在接到来电时将 Activity 带到前台。我在应用程序中使用 Twilio,并在收到推送消息时开始调用。 问题是我试图在接到任何电话时显示 Act
我是一名优秀的程序员,十分优秀!