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