gpt4 book ai didi

gcc - 为什么 nm libc.so 没有报告符号?

转载 作者:行者123 更新时间:2023-12-03 13:54:30 24 4
gpt4 key购买 nike

我已经构建了一个像这样的简单程序:

g++ application.cpp -o application.exe

然后执行命令;

ldd application.exe
...
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6
...

我想列出libc库的所有符号:
nm /lib/x86_64-linux-gnu/libc.so.6
nm: /lib/x86_64-linux-gnu/libc.so.6: no symbols

nm --defined-only /lib/x86_64-linux-gnu/libc.so.6
nm: /lib/x86_64-linux-gnu/libc.so.6: no symbols

为什么 nm 报告没有符号?如果 libc.so.6 不是库,而是某种指向实际库的链接,那么我如何才能找到实际库?

最佳答案

默认情况下,nm 读取 ELF 对象中的 .symtab 部分,这在不可重定位对象中是可选的。使用 -D / --dynamic option ,您可以指示 nm 读取动态符号表(运行时实际使用的符号)。您可能还需要使用--with-symbol-versions,因为glibc广泛使用符号版本控制。

或者,您可以使用 eu-readelf --symbols=.dynsymobjdump -Tw 。 ( readelf -sDW 不包括符号版本信息。)

关于gcc - 为什么 nm libc.so 没有报告符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54052534/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com