Сразу оговорюсь, что сравнение размеров делал после strip (без опций) и опции компиляции для большого C-файла и нескольких одинаковые.
Была некая программа одним большим C-файлом. Вынес одну функцию во новый C-файл, её прототип определил в новом H-файле. Собрал как и раньше, только указал уже не один C-файл для GCC, а два. Бинарник получился меньше. Стал выносить больше C-функций, бинарник стал уменьшаться. Даже вынос глобальных переменных с typedef-ами уменьшил бинарник на несколько байт.
Получается, если на каждую функцию сделать отдельный файл, то бинарник будет совсем маленький?
GCC стандартный, из Slackware.
$gcc -v
Configured with: ../gcc-3.4.6/configure --prefix=/usr --enable-shared --enable-threads=posix --enable-__cxa_atexit --disable-checking --with-gnu-ld --verbose --target=i486-slackware-linux --host=i486-slackware-linux
Thread model: posix
gcc version 3.4.6
Кто не верит, пусть проверит ... на "Hello World" не работает, но на сложном примере - наверняка ;-)
Форум —
Development
