linux - 如何彻底剥离可执行文件

标签 linux gcc executable elf strip

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

我尝试使用 strip:

strip --strip-all elf

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

我该怎么办?

最佳答案

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

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

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

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

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

关于linux - 如何彻底剥离可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4179010/

相关文章:

linux - 在 Linux (Ubuntu) 中绘制图表

python - 在 Linux 启动时运行 python3 应用程序

C 编程 - 数组的大小

c++ - 包含的库仍然导致 "undefined reference"错误

python - 在 Windows 上启动时运行 Python 程序

linux - 别名 - cd 后跟 ls

linux - SMP 关联路由不适用于 ARM 上的 GICv2

c++ - auto 作为常规函数中的参数是 GCC 4.9 扩展吗?

windows - 为 Windows 签名可执行文件

c++ - 如何使用scons构建cpp文件: each file with an executable?