Как просмотреть символы в объектных файлах?
Как я могу просматривать символы в a .o файл? нм не работает для меня. Я использую g++ / linux.
5 ответов:
вместо
nm
, вы можете использовать мощныеobjdump
. Обратитесь к Man-странице для деталей. Попробуйobjdump -t myfile
или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); }