За малък проект, който разработвам, използвах проста компилация чрез команден ред. Въпреки това, тъй като стана по-голям, реших да науча и да използвам 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
ping на двоичния файл; все още ли е по-голям след това? - person   schedule 09.01.2012