Объектные файлы без заголовка ELF или способы уменьшить размер объектного файла с помощью GCC? - PullRequest
1 голос
/ 16 декабря 2010

Я использую GCC для компиляции кода на Си.Есть ли способ убрать, например, заголовок ELF из объектного файла и сделать компоновщик, чтобы добавить заголовок?Или есть ли другие возможности урезать размер результирующего объектного файла, кроме очевидных флагов -Os и -s? (- ffast-math, -fomit-frame-pointer, -fshort-doubles помогают уменьшить размер кода, но зашифровываютобъектный файл показывает огромное количество нулей, которые «кажутся» бесполезными).

Такие инструменты, как strip / sstrip, на самом деле не очень полезны, так как объектный файл должен сохранять символы (он будет связан позже).(-strip-ненужный и -R .comment -R .gnu.version делают свое волшебство все же).

То, что я делаю, - это то, что требует от меня связать (сжать) объектный файл с пользователем и иметьскрипт, встроенный, чтобы связать его на стороне пользователя.Каждый байт имеет значение!

Ответы [ 3 ]

1 голос
/ 16 декабря 2010

Заголовок ELF не может быть удален и восстановлен позже, так как ценная информация сохраняется там, а затем теряется навсегда (например, смещения файлов для некоторых таблиц, архитектура и т. Д. IIRC). Вы уже перечислили почти все, что вы можете сделать, чтобы уменьшить размер, кроме, возможно, bzip'ing.

0 голосов
/ 02 ноября 2011

Вы можете попробовать поиграть с -fdata-sections, -ffunction-sections и -Wl,--gc-sections, но это небезопасно, поэтому не забудьте понять, как они работают, прежде чем их использовать.

0 голосов
/ 16 декабря 2010

Если вы запускаете объектные файлы с помощью алгоритма сжатия, эти «огромные количества нулей» должны уменьшиться в значительной степени, поскольку они имеют низкое информационное содержание.Возможно, вы захотите изучить лучший алгоритм сжатия, возможно, там можно получить больше, чем, если возможно, перейдя к измененному / нестандартному «взломанному» формату объектных файлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...