linux查看so库函数命令

linux查看so库函数命令

nm命令:通过使用nm命令,可以列出so库中定义的所有符号,包括函数、变量等。使用以下命令:

“ nm -D “

例如:

nm -D libtest.so

该命令将列出libtest.so库中的所有符号,其中包括函数名称。

nm [option(s)] [file(s)]

有用的options:

-A 在每个符号信息的前面打印所在对象文件名称;

-C 输出demangle过了的符号名称;

-D 打印动态符号;

-l 使用对象文件中的调试信息打印出所在源文件及行号;

-n 按照地址/符号值来排序;

-u 打印出那些未定义的符号;

常见的符号类型:

A 该符号的值在今后的链接中将不再改变;

B 该符号放在BSS段中,通常是那些未初始化的全局变量;

D 该符号放在普通的数据段中,通常是那些已经初始化的全局变量;

T 该符号放在代码段中,通常是那些全局非静态函数;

U 该符号未定义过,需要自其他对象文件中链接进来;

W 未明确指定的弱链接符号;同链接的其他对象文件中有它的定义就用上,否则就用一个系统特别指定的默认值。

注意几点:

-C 总是适用于c++编译出来的对象文件。还记得c++中有重载么?为了区分重载函数,c++编译器会将函数返回值/参数等信息附加到函数名称中去形成一个mangle过的符号,那用这个选项列出符号的时候,做一个逆操作,输出那些原始的、我们可理解的符号名称。

使用 -l 时,必须保证你的对象文件中带有符号调式信息,这一般要求你在编译的时候指定一个 -g 选项,见 Linux:Gcc。

使用nm前,最好先用Linux:File查看对象文件所属处理器架构,然后再用相应交叉版本的nm工具。

猜你喜欢

FIFA世界杯,俄罗斯2018,高清,照片,时刻专辑列表/第1页
3ce高光棒正品多少钱?韩国3ce高光棒专柜价格
365bet体育在线中文网

3ce高光棒正品多少钱?韩国3ce高光棒专柜价格

07-11 7907
dnf武器拳套哪个好看
365bet体育在线中文网

dnf武器拳套哪个好看

07-15 2670
cartridge是什么意思,cartridge的意思翻译、用法、同义词、例句
新到7款IOS影视
365bet体育在线中文网

新到7款IOS影视

08-02 1528
金针菇的禁忌人群 金针菇不能和什么同食
365彩票所有官方app下载平台

金针菇的禁忌人群 金针菇不能和什么同食

07-10 5821