Как уменьшить размер исполняемых файлов, созданных с помощью GNAT?

Итак, я некоторое время играл с Ada, это потрясающий язык, но я не могу понять, как уменьшить размер исполняемых файлов (я использую GNAT 5.3 в Windows). В настоящее время размер файла hello world составляет около 800 кб. Когда я удаляю отладочную информацию, она становится ~ 222 КБ. Есть идеи, как сделать его меньше?


person Sergey Polyansky    schedule 08.01.2016    source источник
comment
В Руководстве пользователя есть раздел об уменьшении размера исполняемого файла. Раньше речь шла о gnatelim, но в последнее время способы могли измениться. Вы пробовали эти предложения, например. вероятный вариант -Os?   -  person B98    schedule 08.01.2016
comment
@ B98 Да, я прочитал это. Gnatelim, похоже, не работает на Windows, по крайней мере, у mingw-w64 нет gnatelim. Я пробовал '-ffunction-sections -fdata-sections -Wl,—gc-sections', но это совсем не помогает. '-Os' не помогает эфиру.   -  person Sergey Polyansky    schedule 08.01.2016


Ответы (5)


Ada.Text_IO характерен. Если вам не нужны все его возможности, попробуйте GNAT.IO; в Mac OS X (FSF GCC 5.1) размер незашифрованного исполняемого файла уменьшился с 360816 байт до 166356, а размер удаленного — с 192200 до 83540.

Еще одно: по какой-то причине GNAT не использует общие библиотеки (DLL), если вы не скажете ему об этом. Принудительное динамическое связывание (gnatmake -O2 hello -bargs -shared) уменьшило размер версии 4_ до 17520 байт (удалено 14304), а версии GNAT.IO — до 13976 байт (удалено 11888).

person Simon Wright    schedule 08.01.2016
comment
Для мишеней Дарвина также учитывайте -largs -dead_strip. - person trashgod; 09.01.2016
comment
Рассмотрим gnatmake file.adb -largs -s. - person KIM Taegyoon; 09.05.2016

Я не думаю, что имеет смысл создавать программу hello world минимального размера на Аде.

Время выполнения Ada имеет большую полезную нагрузку, чем C.

Вот обсуждение этого вопроса: https://groups.google.com/forum/#!topic/comp.lang.ada/1zvvW0Mw5Bw

person qunying    schedule 08.01.2016

Если вы просто хотите уменьшить размер исполняемого файла «Hello World», вы можете импортировать write() и использовать его вместо Ada.Text_IO.

person Jacob Sparre Andersen    schedule 09.01.2016

К вашему сведению: стандартный Hello World на GNU/Hurd с настройкой gnatmake занимает около 16 КБ. Снято около 8,5 КБ. Никаких вычурных трюков, но, вероятно, gnat.adc с ограничениями.

person Jesper Quorning    schedule 26.01.2019

В те дни, когда размер был проблемой, я иногда использовал UPX. Я считаю, что это все еще вокруг.

person Rob Veenker    schedule 09.01.2016