2010-09-02 29 views
9

Necesito encontrar el tamaño del código para una biblioteca desarrollada usando C en linux. He generado el archivo del mapa usando las opciones del enlazador gcc contra una aplicación de muestra que usa esta biblioteca.interpretar el archivo de mapa gcc

El archivo del mapa es bastante exhaustivo. ¿Cómo puedo averiguar el tamaño del código de la biblioteca desde el archivo del mapa? cualquier puntero a cualquier documentación sobre cómo interpretar el archivo del mapa también sería muy útil.

+1

Bueno, descubrí una forma más para encontrar el tamaño del código que he pensé que debería compartirlo con todos ustedes. El comando es 'tamaño'. Puede leer más sobre el uso aquí - http://www.cyberciti.biz/faq/linux-find-size-of-text-data-segment-bss-uninitialized-data/ – sthustfo

Respuesta

8

¿Desea conocer el tamaño de las instrucciones de la máquina en un objeto compartido dado? ¿Por qué necesitas el archivo del mapa?

Esto le da el tamaño de la sección .text. La sección .text es donde se almacena el código ejecutable:

 
$ objdump -x /usr/bin/objdump | grep .text 
13 .text   0002c218 0000000000403320 0000000000403320 00003320 2**4 

En este ejemplo, hay 2c218 bytes de texto ejecutable. En decimal esto es alrededor de 180 KiB:

 
$ printf %d\\n 0x2c218 
180760 

Editar: Esta es la forma en que se ve como con una biblioteca:

 
$ objdump -x /usr/lib/libcairo.so | grep .text 
11 .text   00054c18 000000000000cc80 000000000000cc80 0000cc80 2**4 
$ printf %d\\n 0x54c18 
347160 
+0

Gracias. Una persona de ventas quería el tamaño del código de la biblioteca para poder comunicarlo al cliente. Si ejecuto el objdump como ha sugerido en comparación con el ejecutable de muestra, proporciona el tamaño de texto de la biblioteca y la aplicación de muestra. ¿Hay alguna manera de obtener el tamaño de texto de solo la biblioteca? – sthustfo

+0

Ah, lo siento. En lugar de ejecutar contra el ejecutable, debe ejecutarlo contra la biblioteca en cuestión. Acabo de utilizar/usr/bin/objdump como un ejemplo (malo) para la salida. –

+2

Si la pregunta provino de una persona de ** ventas **, ciertamente debería agregar las secciones '.data' y' .bss' también (datos inicializados y unificados), lo que significa que el tamaño es solo el tamaño de archivo de la .a si despojado Juegue tonto, los clientes generalmente no se preocupan solo por la sección .text, los datos marcan la diferencia. – rurban

Cuestiones relacionadas