Мені потрібно жорстко оптимізувати розмір мого виконуваного файлу ( ARM
розробка), і я помітив, що в моїй поточній схемі збірки ( gcc
+ ld
) невикористані символи не знімаються.
Використання arm-strip --strip-unneeded
для отриманих виконуваних файлів / бібліотек не змінює розмір виводу виконуваного файлу (я не маю поняття, чому, можливо, він просто не може) .
Яким би був спосіб (якщо він існує) змінити мій конвеєр будівлі, щоб невикористані символи були вилучені з отриманого файлу?
Я б навіть не думати про це, але моєї поточної впроваджений середовище не дуже «сильна» і збереженні навіть 500K
з 2M
результатів в дуже хорошому прирості продуктивності завантаження.
Оновлення:
На жаль, поточна gcc
версія, яку я використовую, не має цього -dead-strip
варіанту, а -ffunction-sections... + --gc-sections
for ld
не дає суттєвої різниці для отриманого результату.
Я вражений тим, що це навіть стало проблемою, тому що я був впевнений, що він gcc + ld
повинен автоматично знімати невикористані символи (чому вони взагалі повинні їх зберігати?).
boost
бібліотеки, отриманий .exe
файл містить багато невикористаних об'єктних файлів і завдяки специфікаціям мого поточного вбудованого режиму виконання , запуск 10mb
програми займає набагато більше часу, ніж, наприклад, запуск 500k
програми.