代码之家  ›  专栏  ›  技术社区  ›  peoro

如何彻底剥离可执行文件

  •  32
  • peoro  · 技术社区  · 14 年前

    我想尽量脱光衣服-在Linux上:一个精灵。我只想把我需要的东西放进去。

    我试着用 strip :

    strip --strip-all elf
    

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

    我该怎么办?

    4 回复  |  直到 11 年前
        1
  •  36
  •   Dirk is no longer here    14 年前

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

    说真的,也许你的应用程序有很多符号和代码。从一个极端来看,最大的规模缩减将是 rm elf 但是你的程序就不能运行了。一切都取决于 你的程序 以及你在里面的密码。

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

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

    总之,我相信 . 如果不更改代码,可能无法进一步缩减应用程序。

        2
  •  15
  •   yorick    14 年前

    使用-R选项剥离,可以剥离所有不需要的部分。也看看 this 关于最小的ELF可执行文件。

        3
  •  7
  •   ossys    14 年前

    我想看看这篇伟大的文章,深入探讨如何使ELF尽可能小的可执行文件。也许它有可以帮助的信息!

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

        4
  •  1
  •   krzysz00    14 年前
    strip -R .comment
    gcc -Os elf.c
    

    这两个可能会有帮助。