我期望看到中的符号数量libc.so.6文件包括打印函数。我用的是纳米找到它们的工具,但它说 libc.so.6 中没有符号。
答案1
它可能已经去掉了常规符号,剩下的是动态符号,您可以使用nm -D
.
答案2
@PSkocik 回答了这个问题。我只是想添加更多细节。 ELF 中有两种符号部分:.symtab
和.dynsym
(参见Linux 标准基本核心规范,又名 LSB_5.0.0,了解详情)。.symtab
用于共享库本身的链接步骤。一旦链接完成,.symtab
就不再需要该部分。该.dynsym
部分包含动态链接器在运行时搜索的重要符号。nm
默认情况下仅转储该.symtab
部分中的符号。
LSB_5.0.0第 10.2.2.1 节“ELF 节类型”指出,符合标准的共享库应该具有其中之一.symtab
或.dynsym
两者,但不能同时具有两者。作为 ABI 库的一部分,libc 被从.symtab
规范中剥离出来。
答案3
查明它是共享对象还是常规 ASCII 文件。如果它是共享对象,您应该看到“ELF 32 位 LSB 共享对象”,
file /lib/i386-linux-gnu/libc.so.6