Sobre los símbolos de depuración

La mayoría de los programas y librerías se compilan por defecto incluyendo los símbolos de depuración (con la opción -g de gcc).

Cuando se depura un programa o librería que fue compilado incluyendo la información de depuración, el depurador no nos da sólo las direcciones de memoria, sino también los nombres de las rutinas y variables.

Pero la inclusión de estos símbolos de depuración agranda sustancialmente un programa o librería. Para tener una idea del espacio que ocupan estos símbolos, echa un vistazo a lo siguiente:

Los tamaños pueden variar algo, dependiendo de qué compilador se usó y con qué librería C. Pero cuando comparamos programas con y sin símbolos de depuración, la diferencia generalmente está en una relación de entre 2 y 5.

Como muchas personas probablemente nunca usen un depurador en su sistema, eliminando estos símbolos se puede liberar una gran cantidad de espacio del disco.

Para eliminar los símbolos de depuración de un binario (que debe ser un binario a.out o ELF) ejecuta strip --strip-debug fichero. Pueden usarse comodines para procesar múltiples ficheros (utilizando algo como: strip --strip-debug $LFS/tools/bin/*).

Para tu comodidad, en el Capítulo 9 se incluye un comando simple para eliminar todos los símbolos de depuración de los programas y librerías del sistema. Puedes encontrar información adicional en la receta de optimización que hay en http://www.escomposlinux.org/lfs-es/recetas/optimization.html (el original se encuentra en http://www.linuxfromscratch.org/hints/downloads/files/optimization.txt).