Ho bisogno di ottimizzare la dimensione del mio eseguibile in modo serio ( ARM
sviluppo) e ho notato che nel mio attuale schema di compilazione ( gcc
+ ld
) i simboli inutilizzati non vengono rimossi.
L'uso di arm-strip --strip-unneeded
per gli eseguibili / librerie risultanti non cambia la dimensione di output dell'eseguibile (non ho idea del perché, forse semplicemente non può) .
Quale sarebbe il modo (se esiste) per modificare la pipeline di costruzione, in modo che i simboli inutilizzati vengano rimossi dal file risultante?
Non ci penserei nemmeno, ma il mio attuale ambiente embedded non è molto "potente" e il risparmio anche 500K
dei 2M
risultati in un bel miglioramento delle prestazioni di caricamento.
Aggiornare:
Sfortunatamente la gcc
versione corrente che uso non ha l' -dead-strip
opzione e il -ffunction-sections... + --gc-sections
for ld
non dà alcuna differenza significativa per l'output risultante.
Sono scioccato dal fatto che questo sia diventato persino un problema, perché ero sicuro che gcc + ld
avrebbe dovuto rimuovere automaticamente i simboli inutilizzati (perché devono anche tenerli?).
boost
librerie, il .exe
file risultante contiene molti file oggetto inutilizzati e a causa delle specifiche del mio attuale runtime incorporato , l'avvio di 10mb
un'applicazione richiede molto più tempo rispetto, ad esempio, all'avvio di 500k
un'applicazione.