如何彻底删除可执行文件

时间:2010-11-14 18:44:16

标签: linux gcc executable elf strip

我想尽可能多地剥离 - 在Linux上:一个ELF。我只想在那里运行它需要的东西。

我尝试使用strip

strip --strip-all elf

但它似乎没有做好:nm仍然显示很多东西,而二进制文件仍然很大。

我该怎么办?

4 个答案:

答案 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

这两个可能有所帮助。