Linux 如何彻底剥离可执行文件
我想尽可能多地脱衣——在Linux上:一个精灵。我只想把我需要的东西放在里面 我尝试使用Linux 如何彻底剥离可执行文件,linux,gcc,executable,elf,strip,Linux,Gcc,Executable,Elf,Strip,我想尽可能多地脱衣——在Linux上:一个精灵。我只想把我需要的东西放在里面 我尝试使用条带: strip --strip-all elf 但是它似乎做得不好:nm仍然显示很多东西,二进制文件仍然很大 我该怎么办?使用-R选项剥离,您可以剥离所有不需要的部分。还可以查看有关最小ELF可执行文件的信息。如果其他所有操作都失败,您可以阅读文档,从man strip开始 说真的,也许你的应用程序有很多符号和代码。在一个极端情况下,最大的大小缩减是rm elf,但这样您的程序就不会再运行了。这一切都取
条带:
strip --strip-all elf
但是它似乎做得不好:nm
仍然显示很多东西,二进制文件仍然很大
我该怎么办?使用-R选项剥离,您可以剥离所有不需要的部分。还可以查看有关最小ELF可执行文件的信息。如果其他所有操作都失败,您可以阅读文档,从man strip
开始
说真的,也许你的应用程序有很多符号和代码。在一个极端情况下,最大的大小缩减是rm elf
,但这样您的程序就不会再运行了。这一切都取决于你的程序和你的代码
作为一个具体的例子,我最近使用了一个大型C++库,其中代码“>Load <代码>没有进一步的参数将大小从400 +MB缩小到大约28 MB。但是,您不能再与它进行链接(在其他共享库的上下文中),这使得它有些无用
但是当使用strip——strip不需要时,它将大小从400+mb更改为55 mb,这仍然相当可观,但允许从其他共享库访问库
简而言之,我相信strip
。如果不更改代码,您的应用程序可能无法进一步缩减
strip -R .comment
gcc -Os elf.c
这两种方法可能会有所帮助。我会阅读这篇伟大的文章,深入探讨如何使ELF可执行文件尽可能小。也许它有一些信息可以帮助你
您最初是如何构建它的?我意识到这个问题很久以前就被问到了。我假设您已经将其构建为一个动态链接的二进制文件。如果您创建一个静态链接的ELF文件,然后将其剥离,您可能会得到更满意的结果。@peoro来自Ignacio的注释是相关的。将-s
添加到gcc将清空符号表。