Eu preciso otimizar o tamanho do meu executável severamente ( ARM
desenvolvimento) e notei que no meu esquema de compilação atual ( gcc
+ ld
) os símbolos não usados não estão sendo removidos.
O uso de arm-strip --strip-unneeded
para os executáveis / bibliotecas resultantes não altera o tamanho de saída do executável (não tenho ideia do motivo, talvez simplesmente não possa) .
Qual seria a maneira (se houver) de modificar meu pipeline de construção, de modo que os símbolos não utilizados sejam retirados do arquivo resultante?
Eu nem sequer penso nisso, mas meu ambiente incorporado atual não é muito "forte" e economizando ainda 500K
fora de 2M
resultados em um impulso muito agradável desempenho de carregamento.
Atualizar:
Infelizmente, a gcc
versão atual que uso não tem a -dead-strip
opção e o -ffunction-sections... + --gc-sections
for ld
não dá nenhuma diferença significativa para a saída resultante.
Estou chocado que isso se tornou um problema, porque eu tinha certeza que gcc + ld
deveria remover automaticamente os símbolos não utilizados (por que eles ainda têm que mantê-los?).
boost
bibliotecas, o .exe
arquivo resultante contém muitos arquivos objetos não usados e devido às especificações do meu tempo de execução incorporado atual , iniciar um 10mb
aplicativo demora muito mais do que, por exemplo, iniciar um 500k
aplicativo.