关于在Linux下装载调用链接库,排查问题的一些手段和语句使用

9 篇文章 0 订阅

背景:接第三方的行情接口,使用第三方的so文件和demo,并且将第三方的so进一步封装进本方的动态链接库中(假设就叫CDHmarketApi.so 随便起的,如有雷同,纯属巧合),成为本方链接库的一个行情订阅功能模块;
遇到的一些问题:
在这里插入图片描述这个问题表明是符号未定义的问题,而且直接定位于产品链接的第三方库中,因为没有这个第三方库的源码,给排查增加了难度。
错误定位:
这块可以通过ldd -r命令查看生成的so是否存在符号未定义的内容。

     ldd -r libCDHMarketApi.so

发现果然有好几个缺失的函数符号,不只是图上的这一个函数符号;网上补充:如果想在Ubuntu等Linux宿主机上查看ARM交叉编译好的可执行程序和库文件的相关依赖关系,可以通过以下命令:
readelf -d xxx.so | grep NEEDED
知道函数符号错了之后,可以通过以下命令辅助查看 具体是自己哪个cpp封装的时候调用了这个函数:

	(3) 使用 c++filt symbol(上面那个函数符号:_ZN2.....) 定位错误在那个C++文件中

知道是哪几个特定的函数后。要么直接询问提供提供库文件的第三方,要么用命令挨个库文件排查;比如我调用了第三方接口中含有15个库文件(我想骂人),用以下命名查找函数符号列表:

nm -D ./xxx/lib/第三方的某个库so.1 | grep _ZN2..... 

找到了就把这个库文件加到自己的编译选项中,一般都是丢失了,如果都找不到就@第三方 ,询问是不是给少了库文件~;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值