Как сделать исполняемые файлы, сделанные с GNAT меньше?
Так что я некоторое время играл с Ada, это потрясающий язык, но я не могу понять, как сделать исполняемые файлы меньше (я использую GNAT 5.3 для Windows). В настоящее время размер файла hello world составляет около 800 кб. Когда я раздеваю отладочную информацию, она становится ~222 кб. Есть идеи, как сделать его меньше?
4 ответа
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).
Я не думаю, что очень важно иметь минимальную программу Hello World в Аде.
Ада во время выполнения имеет большую полезную нагрузку, чем Си.
Вот обсуждение этого: https://groups.google.com/forum/
К сведению: Стандартный Hello World на GNU/Hurd с настройкой gnatmake составляет около 16 КБ. Снято около 8,5 КБ. Никаких хитростей, но, вероятно, gnat.adc с ограничениями.
Если вы просто хотите уменьшить размер исполняемого файла Hello World, вы можете импортировать write()
и использовать это вместо Ada.Text_IO
,
В те дни, когда размер был проблемой, я иногда использовал UPX. Я верю, что это все еще вокруг.