Для небольшого проекта, который я разрабатываю, я использовал простую компиляцию через командную строку. Однако, когда он стал больше, я решил изучить и использовать 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. Так что я, очевидно, склонен думать, что это что-то связанное с отладкой.
Итак, кто-нибудь знает, для чего нужны эти разделы, если они необходимы и как от них избавиться, чтобы исполняемые файлы были меньше для распространения.
strip
пропинговать бинарник; после этого он все еще больше? - person   schedule 09.01.2012