Necesito optimizar el tamaño de mi ejecutable severamente ( ARM
desarrollo) y noté que en mi esquema de compilación actual ( gcc
+ ld
) los símbolos no utilizados no se eliminan.
El uso de arm-strip --strip-unneeded
para los ejecutables / bibliotecas resultantes no cambia el tamaño de salida del ejecutable (no tengo idea de por qué, tal vez simplemente no pueda) .
¿Cuál sería la forma (si existe) de modificar la tubería de mi edificio, de modo que los símbolos no utilizados se eliminen del archivo resultante?
Ni siquiera pensaría en esto, pero mi entorno embebido actual no es muy "poderoso" y ahorrar incluso 500K
los 2M
resultados en un aumento de rendimiento de carga muy bueno.
Actualizar:
Por desgracia, la actual gcc
utilización versión que no tiene la -dead-strip
opción y el -ffunction-sections... + --gc-sections
de ld
no dar ninguna diferencia significativa para los productos resultantes.
Me sorprende que esto incluso se convierta en un problema, porque estaba seguro de que gcc + ld
debería eliminar automáticamente los símbolos no utilizados (¿por qué tienen que conservarlos?).
boost
bibliotecas, el .exe
archivo resultante contiene muchos archivos de objetos no utilizados y debido a las especificaciones de mi tiempo de ejecución incrustado actual , iniciar una 10mb
aplicación lleva mucho más tiempo que, por ejemplo, iniciar una 500k
aplicación.