如何查看符号表

时间:2022-06-21 18:26:48
链接库文件的时候,经常会报链接错误,提示某某函数找不到定义
这时候如果想看一下这个库的符号表,确认一下这个库中是不是定义了这个函数(或者是不是定义了函数,但是命名规则不一样),有什么方法?
我记得有个什么命令可以查看二进制代码的符号表的,但是忘了!

如果是在linux下,又有什么方法呢?应该跟windows下是不同的命令吧?

9 个解决方案

#1


帮顶,关注中。。。

#2


http://sourceware.org/binutils/docs/binutils/nm.html
     nm [-a|--debug-syms]
        [-g|--extern-only][--plugin name]
        [-B] [-C|--demangle[=style]] [-D|--dynamic]
        [-S|--print-size] [-s|--print-armap]
        [-A|-o|--print-file-name][--special-syms]
        [-n|-v|--numeric-sort] [-p|--no-sort]
        [-r|--reverse-sort] [--size-sort] [-u|--undefined-only]
        [-t radix|--radix=radix] [-P|--portability]
        [--target=bfdname] [-fformat|--format=format]
        [--defined-only] [-l|--line-numbers] [--no-demangle]
        [-V|--version] [-X 32_64] [--help]  [objfile...]

#3


Code::Blocks有一个插件叫SymTab,有GUI前台界面。

#4


nm, objdump

#5


引用 4 楼 do_fork 的回复:
nm, objdump

好久不见!

#6


引用 5 楼 loaden 的回复:
引用 4 楼 do_fork 的回复:

nm, objdump

好久不见!



邓老师好

#7


补充一个 readelf

#8


windows下是dumpbin.exe

#9


你如果知道DLL函数的调用约定,如果你是静态链接,只要让函数的调用约定相符就行,如果是冬动态链接,那你可以查一查函数名字修饰符约定,按约定查找函数名即可。

#1


帮顶,关注中。。。

#2


http://sourceware.org/binutils/docs/binutils/nm.html
     nm [-a|--debug-syms]
        [-g|--extern-only][--plugin name]
        [-B] [-C|--demangle[=style]] [-D|--dynamic]
        [-S|--print-size] [-s|--print-armap]
        [-A|-o|--print-file-name][--special-syms]
        [-n|-v|--numeric-sort] [-p|--no-sort]
        [-r|--reverse-sort] [--size-sort] [-u|--undefined-only]
        [-t radix|--radix=radix] [-P|--portability]
        [--target=bfdname] [-fformat|--format=format]
        [--defined-only] [-l|--line-numbers] [--no-demangle]
        [-V|--version] [-X 32_64] [--help]  [objfile...]

#3


Code::Blocks有一个插件叫SymTab,有GUI前台界面。

#4


nm, objdump

#5


引用 4 楼 do_fork 的回复:
nm, objdump

好久不见!

#6


引用 5 楼 loaden 的回复:
引用 4 楼 do_fork 的回复:

nm, objdump

好久不见!



邓老师好

#7


补充一个 readelf

#8


windows下是dumpbin.exe

#9


你如果知道DLL函数的调用约定,如果你是静态链接,只要让函数的调用约定相符就行,如果是冬动态链接,那你可以查一查函数名字修饰符约定,按约定查找函数名即可。