Как просмотреть символы в файле .o? нм у меня не работает. Я использую g++/linux.
Как просмотреть символы в объектных файлах?
Ответы (5)
Вместо nm
вы можете использовать мощный objdump
. Подробности смотрите на справочной странице. Попробуйте objdump -t myfile
или objdump -T myfile
. С флагом -C
вы также можете демангелизировать имена C++, как это делает nm
.
objdump: Lib1.o: File format not recognized
- person nakiya; 07.10.2010
objdump -t Lib1.o
- person mustafa; 23.04.2014
Вы использовали кросс-компилятор для другой платформы? Если это так, вам нужно использовать соответствующую команду nm
или objdump
.
Например, если вы использовали XXX-YYY-gcc
для компиляции файла .o, вам нужно использовать XXX-YYY-nm
или XXX-YYY-objdump
для обработки файлов.
Существует команда, чтобы посмотреть, какие функции включены в объектный файл, библиотеку или исполняемый файл:
nm
nm
.
- person ivan_pozdeev; 14.03.2016
Просто запустите: nm you_obj_file.o | c++filt
Вы можете использовать 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);
}
nm: Lib1.o: File format not recognized
- person nakiya   schedule 07.10.2010file Lib1.o
и сообщите нам результат. - person DarkDust   schedule 07.10.2010file Lib1.o
в своей оболочке. Инструмент под названиемfile
сообщает вам тип файла Lib1.o, то есть действительно ли это объектный файл. Я сомневаюсь в этом. - person DarkDust   schedule 07.10.2010