2012-01-09 1 views
3

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

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

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

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

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

+1

Я не знаю, как хорошо, но похоже, что вы включаете символы отладки через ваш сценарий automake. Попробуйте найти параметр automake, который отключает это. – dtech

+1

В соответствии с этим - попробуйте 'strip'ping the binary; это все еще больше после этого? – duskwuff

+0

да! После использования полосы на обоих, они получили одинаковый размер. Извините, я не знал об этой команде. Я также понял, что «проблема» заключалась в том, что automake автоматически ставит параметр -g в g ++ во время компиляции, что на самом деле является отладочным символом, как сказал dtech. Спасибо за помощь. –

ответ

5

Просто установите make install-strip при установке двоичных файлов и install будет лишать их во время процесса установки.