automake выходные двоичные файлы больше, чем бины, скомпилированные из командной строки

Для небольшого проекта, который я разрабатываю, я использовал простую компиляцию через командную строку. Однако, когда он стал больше, я решил изучить и использовать autoconf и automake для его компиляции.

После некоторой настройки я успешно построил с помощью automake. Однако я заметил, что размер выходного двоичного файла был больше, чем при использовании g++ через командную строку. Я пробовал использовать статические и динамические библиотеки, и результат был таким же.

Я также пробовал простой hello world, и он также был больше с automake, чем с компиляцией из командной строки.

Итак, я попытался запустить objdump -h: скомпилированная командная строка вернула 27 разделов, а с другой стороны, скомпилированный automake вернул те же 27 разделов плюс 7 разделов, называемых debug_aranges ,debug_info ,debug_abbrev, debug_line, debug_loc, debug_ranges. Так что я, очевидно, склонен думать, что это что-то связанное с отладкой.

Итак, кто-нибудь знает, для чего нужны эти разделы, если они необходимы и как от них избавиться, чтобы исполняемые файлы были меньше для распространения.


person random_user    schedule 09.01.2012    source источник
comment
Я не очень хорошо разбираюсь в automake, но похоже, что вы включаете символы отладки в свой скрипт automake. Попробуйте найти параметр automake, который отключает это.   -  person dtech    schedule 09.01.2012
comment
В соответствии с этим - попробуйте stripпропинговать бинарник; после этого он все еще больше?   -  person    schedule 09.01.2012
comment
да! После использования полосы на обоих они стали одинакового размера. Извините, я не знал об этой команде. Я также понял, что проблема заключалась в том, что automake автоматически помещает параметр -g в g++ во время компиляции, что на самом деле является символом отладки, как сказал dtech. Спасибо за помощь.   -  person random_user    schedule 09.01.2012
comment
automake компилируется с параметрами CFLAGS, определенными пользователем во время настройки, а параметр CFLAGS по умолчанию равен -g -O2. Вы не должны изменять свой Makefile.am, чтобы изменить это, но назначайте CFLAGS при запуске configure.   -  person William Pursell    schedule 10.01.2012


Ответы (1)


Просто вызовите make install-strip при установке двоичных файлов, и install удалит их в процессе установки.

person ldav1s    schedule 09.01.2012