автоматично прави изходните двоични файлове по-големи от компилираните от командния ред контейнери

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