我想尽可能多地剥离 - 在Linux上:一个ELF。我只想在那里运行它需要的东西。
我尝试使用strip
:
strip --strip-all elf
但它似乎没有做好:nm
仍然显示很多东西,而二进制文件仍然很大。
我该怎么办?
答案 0 :(得分:35)
如果其他一切都失败了,您可以阅读文档,从man strip
开始。
说真的,也许你的应用程序有很多符号和代码。在一个极端情况下,最大尺寸缩减将是rm elf
,但随后您的程序将不再运行。这完全取决于您的程序以及您编入的内容。
作为一个具体的例子,我最近使用了一个大型C ++库,其中strip
没有进一步的参数,将大小从400 + mb减小到大约28 mb。但是你不能再对它进行链接(在其他共享库的上下文中),使它有点无用。
但是当使用strip --strip-unneeded
时,它将大小从400+ mb更改为55 mb,这仍然相当大,但允许从其他共享库访问库。
简而言之,我相信strip
。如果没有代码更改,也许你的应用程序无法进一步减少。
答案 1 :(得分:15)
使用-R选项进行剥离,您可以去掉所有不需要的部分。另请参阅有关最小ELF可执行文件的this。
答案 2 :(得分:7)
我会查看这篇有关使ELF可执行文件尽可能小的深入文章。也许它有可能有帮助的信息!
http://www.muppetlabs.com/~breadbox/software/tiny/teensy.html
答案 3 :(得分:1)
strip -R .comment
gcc -Os elf.c
这两个可能有所帮助。