Linux 下打造极小 ELF 可执行文件指南
Creating Teensy ELF Executables for Linux (Or, "Size Is Everything")
厌倦了软件膨胀?本文带你一步步将简单的 C 程序压缩到极致。从使用 gcc 的 -s 和 -O3 选项,到抛弃 C 语言改用 Nasm 汇编,再到绕过 _start 和 libc,直接调用 Linux 系统调用 int 0x80。我们将一个返回 42 的程序从近 4000 字节压缩到仅 368 字节。通过深入理解 ELF 文件格式和 Linux 启动机制,你不仅能学会如何制作超小的可执行文件,还能窥见操作系统底层运作的奥秘。
如果你是一位对软件膨胀感到厌倦的程序员,那么这里或许就是完美的解药。
HN 评论区
20- WalterGR
第二部分:https://www.muppetlabs.com/~breadbox/software/tiny/revisit.h...
几个月前在这里讨论过:https://news.ycombinator.com/item?id=48654411
第三部分:https://www.muppetlabs.com/~breadbox/software/tiny/somewhat....
- BruceEel
这其实挺有趣的。我从来没在 Linux 上试过,但 Windows PE EXE 文件也能玩类似的把戏。尤其是 Windows 95,当时非常宽容。我用一个(按今天的标准来看非常原始)的十六进制编辑器,试着让 ".text" 段从文件头的一半处开始,结果……成功了!简直是一种顿悟。我猜现在的加载器出于安全考虑可能会更严格一些,不过我想你总是可以自己写个加载器嘛 :)。
- davidwritesbugs
我想知道这些有多少能由一个聪明的链接器自动完成?这里面确实有很多技巧,但对于我们普通人来说,用 LLM 能搞定吗?