怎么查看头文件、so库里和函数的对应关系

1,查看某个so在Linux(Ubuntu)系统下的路径

ldconfig -p | grep xxx.so

2,查看某个 so库里有什么函数

nm -D xxx.so
或
objdump -tT xxx.so

如果输出符号T,则函数正常导出
如果输出符号U,则函数为定义
这里写图片描述

这里写图片描述

3,怎么确定头文件和库的对应关系?

rpm -qf /usr/include/pthread.h //获得包的名称
rpm -ql <包的名称> //获得包中文件的列表

例:

linux-bjpdOq:~ # rpm -qf /usr/include/securec.h
libsecurec-devel-1.1.1-004.005.x86_64
linux-bjpdOq:~ # rpm -ql libsecurec-devel-1.1.1-004.005.x86_64
/usr/include/securec.h
/usr/include/securectype.h
/usr/lib64/libsecurec.a

但是,对于系统库的文件,比如:

linux-bjpdOq:~ # rpm -qf /usr/include/dlfcn.h
glibc-headers-2.17-196.h22.x86_64

dlfcn.h是一个头文件,调用动态链接库用的,rpm -ql 查看里面全是头文件,发现没有找到库。

这时让我们回忆一下动态库的使用,库文件名为libxxx.so,除了在源码里包含头文件,我们还需要在链接这个库时用 -lxxx 参数.

因此,如果我们知道链接这个库时用的 -ldl参数,我们可以直接确定该so:

# ll /lib64/ | grep libdl
...
# nm -D /lib64/libdl-2.17.so |grep dlopen
0000000000001020 T dlopen
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值