¿Cómo puedo ver los símbolos en un archivo .o? nm no me funciona. Yo uso g ++ / linux.
c++
linux
g++
object-files
nakiya
fuente
fuente

nm: Lib1.o: File format not recognizedfile Lib1.oy decirnos cuál es la salida.file Lib1.o" en su shell. La herramienta llamadafilele dice el tipo de archivo de Lib1.o, es decir, si realmente es un archivo de objeto. Lo dudo.Respuestas:
En lugar de
nm, puedes usar el poderosoobjdump. Consulte la página del manual para obtener más detalles. Pruebaobjdump -t myfileoobjdump -T myfile. Con la-Cbandera también puede exigir nombres de C ++, comonmhace.fuente
objdump: Lib1.o: File format not recognizedobjdump -t Lib1.o¿Ha estado utilizando un compilador cruzado para otra plataforma? Si es así, debe utilizar el comando respectivo
nmoobjdump.Por ejemplo, si ha utilizado
XXX-YYY-gccpara compilar el archivo .o, debe utilizarXXX-YYY-nmoXXX-YYY-objdumpprocesar los archivos.fuente
Solo corre:
nm you_obj_file.o | c++filtfuente
Hay un comando para ver qué funciones están incluidas en un archivo de objeto, biblioteca o ejecutable:
fuente
nm.Puede utilizar
nm -C .o/lib/exe, por ejemplo:xiongyu@ubuntu:~/tmp/build$ nm -C libfile1.a file1.cpp.o: 0000000000000000 T f() 0000000000000000 W int fun<int>(int)usarlo
nm -Cserá más legible , si solo usanm:xiongyu@ubuntu:~/tmp/build$ nm libfile1.a file1.cpp.o: 0000000000000000 T _Z1fv 0000000000000000 W _Z3funIiET_S0_como vemos, no es tan legible.
A continuación se muestra lo que me
file1.cppgusta:xiongyu@ubuntu:~/tmp/build$ vi ../file1.cpp #include "head.h" void f() { int i = fun<int>(42); }fuente