【问题标题】:How to make executables made with GNAT smaller?如何使使用 GNAT 制作的可执行文件更小?
【发布时间】:2019-01-26 21:15:03
【问题描述】:

所以我一直在使用 Ada,它是一种很棒的语言,但我不知道如何使可执行文件更小(我在 Windows 上使用 GNAT 5.3)。目前,hello world 的文件大小约为 800 kb。当我剥离调试信息时,它变为~222 kb。任何想法如何使它更小?

【问题讨论】:

  • 用户指南中有一节是关于减小可执行文件大小的。它曾经是关于 gnatelim 的,但最近可能发生了变化。您是否尝试过这些建议,例如可能的选项-Os?
  • @B98 是的,我读过。 Gnatelim 似乎不适用于 Windows,至少 mingw-w64 没有 gnatelim。我试过'-ffunction-sections -fdata-sections -Wl,--gc-sections',但它根本没有帮助。 '-Os' 对以太没有帮助。

标签: ada gnat


【解决方案1】:

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 被剥离)。

【讨论】:

  • 对于达尔文目标,也可以考虑-largs -dead_strip
  • 考虑gnatmake file.adb -largs -s
【解决方案2】:

我认为在 Ada 中获得一个最小尺寸的 hello world 程序没有什么意义。

Ada 的运行时确实比 C 的负载更大。

下面是关于它的讨论: https://groups.google.com/forum/#!topic/comp.lang.ada/1zvvW0Mw5Bw

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      仅供参考:GNU/Hurd 上的标准 Hello World 及其 gnatmake 设置约为 16kB。剥离大约 8.5kB。没有花哨的技巧,但可能 gnat.adc 有限制。

      【讨论】:

        【解决方案5】:

        在大小成为问题的日子里,我偶尔会使用 UPX。我相信它仍然存在。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-10-16
          • 1970-01-01
          • 1970-01-01
          • 2011-01-10
          相关资源
          最近更新 更多