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