Как просмотреть символы в объектных файлах?
Как я могу просматривать символы в a .o файл? нм не работает для меня. Я использую g++ / linux.
5 ответов
вместо nm
, вы можете использовать мощные objdump
. Подробности см. На странице руководства. Попробуй!--2--> или objdump -T myfile
. С -C
флаг вы также можете demangle имена C++, как nm
делает.
вы использовали кросс-компилятор для другой платформы? Если это так, вам нужно использовать соответствующий nm
или objdump
commmand.
например, если вы воспользовались XXX-YYY-gcc
для компиляции .o файл, вам нужно использовать XXX-YYY-nm
или XXX-YYY-objdump
обрабатывать файлы.
есть команда, чтобы посмотреть, какие функции включены в объектный файл или библиотеку или исполняемый файл:
nm
можно использовать nm -C .o/lib/exe
, например:
xiongyu@ubuntu:~/tmp/build$ nm -C libfile1.a
file1.cpp.o:
0000000000000000 T f()
0000000000000000 W int fun<int>(int)
используя nm -C
это будет более читаемым, если вы просто использовать nm
:
xiongyu@ubuntu:~/tmp/build$ nm libfile1.a
file1.cpp.o:
0000000000000000 T _Z1fv
0000000000000000 W _Z3funIiET_S0_
как мы видим, это не так читаемы.
ниже то, что мой file1.cpp
как:
xiongyu@ubuntu:~/tmp/build$ vi ../file1.cpp
#include "head.h"
void f() {
int i = fun<int>(42);
}