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