mas*_*sec 38 linux shared-library symbol-table nm
我希望在libc.so.6文件中看到包括printf在内的符号数。我使用nm工具找到它们,但是它说 libc.so.6 中没有符号。
小智 16
@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以符合规范。