Estoy implementando un pequeño programa compilado con gcc, 4.3.2-1.1 (Debian). Este programa se implementará en plantillas de máquinas virtuales que van desde Debain 5 hasta Fedora, Ubuntu, Slackware, Arch y otros.¿Cómo incluyo solo los símbolos usados al vincular estáticamente con gcc?
El programa depende de algunos símbolos de las bibliotecas de Xen que solo están disponibles en un árbol inestable. Por lo tanto, la instalación de las bibliotecas de Xen a través de los gestores de paquetes respectivos en las plantillas de máquinas virtuales no resolvería mi problema inmediato.
Hasta que empaque mi propia versión de estas bibliotecas, necesito vincular estáticamente el archivo ejecutable.
¿Gcc 4.3-x, de forma predeterminada solo incluye símbolos que en realidad son utilizados cuando se está vinculando estáticamente, o hay otro indicador de optimización que deba pasar al vinculador? Sé que vincular estáticamente es malo, lo estoy haciendo solo como un trabajo temporal.
Gracias. A veces es frustrante solo averiguar qué buscar. Buscando alrededor usando 'símbolos' en la consulta produjo todo lo que _no estaba buscando :) –
este método funciona ... Pero tenga cuidado como documento https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html advierte: '-funciones -función, -fdata-secciones' ... Solo use estas opciones cuando haya beneficios significativos al hacerlo. Cuando especifica estas opciones, el ensamblador y el enlazador crean objetos más grandes y archivos ejecutables y también son más lentos. No puede usar gprof en todos los sistemas si especifica esta opción, y puede tener problemas con la depuración si especifica tanto esta opción como -g. – EDkan