2010-09-02 8 views
9

Ho bisogno di trovare la dimensione del codice per una libreria sviluppata usando C su linux. Ho generato il file della mappa utilizzando le opzioni del linker gcc su un'applicazione di esempio che utilizza questa libreria.interpretare il file di mappa di gcc

Il file di mappa è abbastanza completo. Come posso scoprire la dimensione del codice della libreria dal file della mappa? qualsiasi suggerimento per qualsiasi documentazione su come interpretare il file della mappa sarebbe anche molto utile.

+1

Beh, ho scoperto un altro modo per trovare la dimensione del codice che ho pensavo di dover condividere con tutti voi. Il comando è 'dimensione'. Puoi leggere ulteriori informazioni sull'utilizzo qui: http://www.cyberciti.biz/faq/linux-find-size-of-text-data-segment-bss-uninitialized-data/ – sthustfo

risposta

8

Si desidera conoscere la dimensione delle istruzioni della macchina in un dato oggetto condiviso? Perché hai bisogno del file di mappa?

Questo dà la dimensione della sezione .text. La sezione .text è dove il codice eseguibile viene memorizzato:

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

In questo esempio, ci sono 2c218 byte di testo eseguibile. In decimale questo è di circa 180 KiB:

 
$ printf %d\\n 0x2c218 
180760 

Edit: Questo è come sembra con una libreria:

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

Grazie. Un addetto alle vendite desiderava la dimensione del codice della libreria in modo che potesse comunicare lo stesso al cliente. Se eseguo l'objdump come suggerito per l'eseguibile di esempio, restituisce la dimensione del testo della libreria e dell'applicazione di esempio. C'è un modo per ottenere le dimensioni del testo solo della libreria? – sthustfo

+0

Ah, mi dispiace. Invece di correre contro l'eseguibile, dovresti eseguirlo contro la libreria in questione. Ho appena usato/usr/bin/objdump come un (cattivo) esempio per l'output. –

+2

Se la domanda proviene da una persona ** vendite **, dovresti certamente aggiungere anche le sezioni '.data' e' .bss' (dati inizializzati e unitializzati), il che significa che la dimensione è solo la dimensione del file .a se spogliato. Gioca da stupidi, i clienti di solito non si preoccupano solo della sezione .text, i dati fanno la differenza. – rurban

Problemi correlati