How can I view symbols in a .o file? nm does not work for me. I use g++/linux.
Instead of nm
, you can use the powerful objdump
. See the man page for details. Try objdump -t myfile
or objdump -T myfile
. With the -C
flag you can also demangle C++ names, like nm
does.
objdump: Lib1.o: File format not recognized
–
Wally objdump -t Lib1.o
–
Macintosh Have you been using a cross-compiler for another platform? If so, you need to use the respective nm
or objdump
commmand.
For example, if you have used XXX-YYY-gcc
to compile the .o file, you need to use XXX-YYY-nm
or XXX-YYY-objdump
to process the files.
There is a command to take a look at which functions are included in an object file or library or executable:
nm
nm
. –
Mingmingche nm
worked perfectly for my needs, so I think this is a fine answer given the circumstances. –
Smallwood You can use nm -C .o/lib/exe
, for example:
xiongyu@ubuntu:~/tmp/build$ nm -C libfile1.a
file1.cpp.o:
0000000000000000 T f()
0000000000000000 W int fun<int>(int)
using nm -C
it will be more readable, if you just use nm
:
xiongyu@ubuntu:~/tmp/build$ nm libfile1.a
file1.cpp.o:
0000000000000000 T _Z1fv
0000000000000000 W _Z3funIiET_S0_
as we see it's not so readable.
Below is what my file1.cpp
like:
xiongyu@ubuntu:~/tmp/build$ vi ../file1.cpp
#include "head.h"
void f() {
int i = fun<int>(42);
}
© 2022 - 2024 — McMap. All rights reserved.
nm: Lib1.o: File format not recognized
– Wallyfile Lib1.o
and tell us what the output is. – Smotherfile Lib1.o
" in your shell. The tool calledfile
tells you the file type of Lib1.o, that is whether it really is an object file. I doubt it. – Smother