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