【发布时间】:2016-02-02 14:16:08
【问题描述】:
ELF 可执行文件中的 .dynsym 表显然有两个用途,导入和导出。我看到我的可执行文件已定义符号(大小> 0)和未定义符号(大小 = 0,来自库)。显然后者是需要的,但我不需要或不想从我的可执行文件中导出任何符号。谁需要它们?这会在我的可执行文件中添加约 3000 个条目和约 350kB。
strip 无法删除它们,它显然没有触及.dynsym。那么我可以使用什么工具来删除这些导出并缩小我的可执行文件?
我知道我无法在我的可执行文件上调用dlopen,这是可以接受的。
[编辑]
原来是-rdynamic,CMake 帮助添加了。
【问题讨论】:
-
您在可执行文件的 .dynsym 中有哪些定义的符号?一个简单的 hello world 可执行文件在我的机器上只有“libc_start_main@GLIBC_2.2.5”和“__gmon_start”。未列出程序中定义的函数和全局变量。
标签: elf