Оптимизация приложения "Hello world"

17.03.2010 11:35

В заметке "Hello from a libc-free world!" рассмотрен вопрос неоптимальной компоновки простейшего приложения на языке Си, возможности которого ограничены присвоением переменной текста "Hello world". При компиляции такой программы в GCC результирующий исполняемый файл имеет размер 11 Кб. При попытке разобраться почему так много, выяснилось, что компилятор использует вызов libc, даже если функции данной библиотеки не используются в самой программе.

При сборке "gcc -nostdlib -o hello hello.c" размер программы сократился до 1 Кб, но такая программа перестала выполняться корректно. Для исправления ситуации был сформирован упрощенный блок инициализации (подпрограмма _start). В сети также доступно более подробное руководство по сокращению исполняемых файлов в формате ELF.

Дополнение: опубликована вторая часть статьи.