it-swarm.com.de

Wie werden Symbole in Objektdateien angezeigt?

Wie kann ich Symbole in einer .o-Datei anzeigen? nm funktioniert bei mir nicht. Ich benutze g ++/Linux.

71
nakiya

Anstelle von nm können Sie auch das mächtige objdump verwenden. Einzelheiten finden Sie auf der Manpage. Versuchen objdump -t myfile oder objdump -T myfile. Mit dem -C flag Sie können auch C++ - Namen entwirren, wie es nm tut.

85
DarkDust

Haben Sie einen Cross-Compiler für eine andere Plattform verwendet? In diesem Fall müssen Sie den entsprechenden Befehl nm oder objdump verwenden.

Wenn Sie zum Beispiel XXX-YYY-gcc Um die .o-Datei zu kompilieren, müssen Sie XXX-YYY-nm oder XXX-YYY-objdump, um die Dateien zu verarbeiten.

12
Schedler

Renn einfach: nm you_obj_file.o | c++filt

5
Jee lee

Es gibt einen Befehl, mit dem Sie überprüfen können, welche Funktionen in einer Objektdatei, Bibliothek oder ausführbaren Datei enthalten sind:

nm
5
Alok Save

Sie können nm -C .o/lib/exe, zum Beispiel:

[email protected]:~/tmp/build$ nm -C libfile1.a 

file1.cpp.o:
0000000000000000 T f()
0000000000000000 W int fun<int>(int)

mit nm -C es wird lesbarer, wenn Sie nur nm verwenden:

[email protected]:~/tmp/build$ nm libfile1.a 

file1.cpp.o:
0000000000000000 T _Z1fv
0000000000000000 W _Z3funIiET_S0_

wie wir sehen, ist es nicht so lesbar.

Unten ist was mein file1.cpp mögen:

[email protected]:~/tmp/build$ vi ../file1.cpp 
#include "head.h"
void f()  {
     int i = fun<int>(42);
}
1
Jayhello