是精灵.注意到部分真正需要的?
题
在Linux上,我试图带一个静态连接的小精灵的文件裸露的必需品。当我运行:
strip --strip-unneeded foo
或
strip --strip-all foo
生成的文件仍然具有的脂肪。注意到部分,似乎是充分的时髦字符串。
是的.注意到部分真正需要或者我可以安全力量与--删除部分?
谢谢你任何帮助。
解决方案
从经验,并从在寻找的男人页 strip
, 它看起来像 strip
是不是 应该 摆脱任何和所有部分和串,不需要;只是 符号.谈论男人页:
GNU strip discards all symbols from object files objfile.
这就是说,从以往的经验, strip
, 即使没有 --strip-all
, 删除部分不需要为装载的,例如 .symtab
和 .strtab
, 和你可以,因为你注意到,删除的部分,你想要它 --remove-section
.
作为一个例子一个 .notes
部分,我参加了 /bin/ls
从我Ubuntu11.10 64位框:
$ readelf -Wn /bin/ls
Notes at offset 0x00000254 with length 0x00000020:
Owner Data size Description
GNU 0x00000010 NT_GNU_ABI_TAG (ABI version tag)
OS: Linux, ABI: 2.6.15
Notes at offset 0x00000274 with length 0x00000024:
Owner Data size Description
GNU 0x00000014 NT_GNU_BUILD_ID (unique build ID bitstring)
Build ID: 3e6f3159144281f709c3c5ffd41e376f53b47952
这涵盖了 .note.ABI-tag
部分和 .note.gnu.build-id
部分。它看起来像它们所包含的数据,不必要的负载的程序,但还不是标准的,是不知道的 strip
要不是必要的适当运行的程序,因为一个精灵可能有任何数量的附加"未知"部分,没有安全的清除。因此,而使用一个虚拟白名单(这将惨遭失败),它使用一个黑名单的部分,它知道它可以摆脱,而这样做。
短短的版本:这些部分似乎并不是标准,可用于各种各样的事情,所以 strip
不能知道它是安全的,以消除它们。但基于信息的内部一个我带上,如果这是你自己的程序,它几乎肯定安全删除。
不隶属于 StackOverflow