39

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

我尝试使用strip

strip --strip-all elf

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

我该怎么办?

4

4 回答 4

41

如果一切都失败了,您可以阅读文档,从man strip.

说真的,也许你的应用程序有很多符号和代码。在一种极端情况下,最大的尺寸减少将是rm elf,但您的程序将不再运行。这完全取决于您的程序以及您在其中编码的内容。

作为一个具体的例子,我最近使用了一个大型 C++ 库,在strip没有进一步的参数的情况下,它的大小从 400+mb 减少到了大约 28mb。但是你不能再链接它(在其他共享库的上下文中),使它有点无用。

但是在使用时strip --strip-unneeded,它将大小从 400+ mb 更改为 55 mb,这仍然是相当大的,但允许从其他共享库访问该库。

简而言之,我相信strip. 如果不更改代码,您的应用程序可能无法进一步减少。

于 2010-11-14T18:52:11.307 回答
16

使用 -R 选项进行剥离,您可以剥离所有不需要的部分。另请参阅有关最小 ELF 可执行文件的内容。

于 2010-11-14T18:51:54.753 回答
8

我会查看这篇很棒的文章,该文章深入探讨了如何使 ELF 可执行文件尽可能小。也许它有可以帮助的信息!

http://www.muppetlabs.com/~breadbox/software/tiny/teensy.html

于 2011-06-14T13:31:47.473 回答
1
strip -R .comment
gcc -Os elf.c

这两个可能会有所帮助。

于 2010-11-14T18:53:44.817 回答