如何使使用GNAT制作的可执行文件更小?

3

我已经使用Ada语言一段时间了,这是一种很棒的语言,但我无法弄清如何使可执行文件更小(我正在Windows上使用GNAT 5.3)。目前,"Hello World"文件的大小约为800 kb。当我去除调试信息时,它变成了约222 kb。有什么办法可以使它更小吗?


用户指南中有一节关于减小可执行文件大小的内容。它曾经是关于 gnatelim 的,但最近可能已经改变了方法。您尝试过这些建议吗?例如 -Os 这个选项。 - B98
@B98 是的,我已经看过了。Gnatelim 在 Windows 上似乎不起作用,至少 mingw-w64 没有 gnatelim。我尝试过“-ffunction-sections -fdata-sections -Wl,–gc-sections”,但完全没有帮助。“-Os”也没有帮助。 - Sergey Polyansky
5个回答

7

Ada.Text_IO 是功能强大的。如果您不需要它的所有功能,请尝试使用 GNAT.IO;在 Mac OS X(FSF GCC 5.1)上,未剥离的可执行文件从 360816 字节减少到 166356 字节,剥离后从 192200 字节减少到 83540 字节。

另外一件事:由于某种原因,除非您告诉它,否则 GNAT 不会使用共享库(DLL)。强制动态链接(gnatmake -O2 hello -bargs -shared)将 Ada.Text_IO 版本缩小到 17520 字节(剥离后为 14304 字节),将 GNAT.IO 版本缩小到 13976 字节(剥离后为 11888 字节)。


2
对于Darwin目标,还要考虑使用-largs -dead_strip - trashgod
考虑使用gnatmake file.adb -largs -s - KIM Taegyoon

4

1
如果你只是想让“Hello World”可执行文件更小,你可以导入write()并使用它来代替Ada.Text_IO

1
FYI:在GNU/Hurd上使用gnatmake设置的标准Hello World大约为16kB。剥离后约为8.5kB。没有花哨的技巧,但可能有gnat.adc限制。

0
在尺寸仍是一个问题的时代,我偶尔会使用UPX。我相信它仍然存在。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接