How to view symbols in object files?

前端 未结 5 1118
旧时难觅i
旧时难觅i 2021-01-30 03:55

How can I view symbols in a .o file? nm does not work for me. I use g++/linux.

相关标签:
5条回答
  • 2021-01-30 04:10

    Just run: nm you_obj_file.o | c++filt

    0 讨论(0)
  • 2021-01-30 04:12

    There is a command to take a look at which functions are included in an object file or library or executable:

    nm
    
    0 讨论(0)
  • 2021-01-30 04:14

    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);
    }
    
    0 讨论(0)
  • 2021-01-30 04:33

    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.

    0 讨论(0)
  • 2021-01-30 04:36

    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.

    0 讨论(0)
提交回复
热议问题