Comment afficher les symboles dans un fichier .o? nm ne fonctionne pas pour moi. J'utilise g ++/linux.
Au lieu de nm
, vous pouvez utiliser le puissant objdump
. Voir la page de manuel pour plus de détails. Essayez objdump -t myfile
ou objdump -T myfile
. Avec le -C
flag vous pouvez également démêler les noms C++, comme le fait nm
.
Avez-vous utilisé un compilateur croisé pour une autre plate-forme? Si tel est le cas, vous devez utiliser la commande nm
ou objdump
respective.
Par exemple, si vous avez utilisé XXX-YYY-gcc
pour compiler le fichier .o, vous devez utiliser XXX-YYY-nm
ou XXX-YYY-objdump
pour traiter les fichiers.
Exécutez simplement: nm you_obj_file.o | c++filt
Il existe une commande pour voir quelles fonctions sont incluses dans un fichier objet ou une bibliothèque ou un exécutable:
nm
Vous pouvez utiliser nm -C .o/lib/exe
, par exemple:
xiongyu@ubuntu:~/tmp/build$ nm -C libfile1.a
file1.cpp.o:
0000000000000000 T f()
0000000000000000 W int fun<int>(int)
en utilisant nm -C
ce sera plus lisible, si vous utilisez simplement nm
:
xiongyu@ubuntu:~/tmp/build$ nm libfile1.a
file1.cpp.o:
0000000000000000 T _Z1fv
0000000000000000 W _Z3funIiET_S0_
comme nous le voyons, ce n'est pas si lisible.
Voici ce que mon file1.cpp
comme:
xiongyu@ubuntu:~/tmp/build$ vi ../file1.cpp
#include "head.h"
void f() {
int i = fun<int>(42);
}