关于"symbol lookup error xxxxx , undefined symbol"问题的解决方式

Linux 同时被 3 个专栏收录
161 篇文章 1 订阅
48 篇文章 0 订阅
55 篇文章 0 订阅

今天在测试基于netlib实现的数据包处理模块时,突然提示symbollookup error gxio_mpipe_init , undefined symbol问题。通过查阅资料对于该问题大部分的问题原因都是动态库的版本过旧,导致应用程序找不到对应的符号而引起的。

但是,通过分析Makefile文件和更新tilera平台上的gxio所依赖的动态库并不能解决上述问题。后来通过nm配合ldd终于解决了问题。分析步骤如下:

  1.  用ldd测试应用层序所依赖的动态库
  2. 使用nm + grep分析gxio相关的动态库下是否包含gxio_mpipe_init符号
  3. 经nm检测发现gxio相关的动态库都不包含gxio_mpipe_init,如$nm libgxio.so | grep gxio_mpipe_init。但gxio静态库(libgxio.a)包含gxio_mpipe_init
  4.  修改应用程序的 Makefile ,将gxio的静态库连接到应用程序中,编译测试问题解决。
  5.  导致上述问题的愿意就是应用程序依赖的gxio动态库中没有gxio_mpipe_init所对应特定的符号,导致运行时出现问题。

总结:导致该问题的原因一般就是动态库的版本过旧,导致应用程序找不到对应的符号,可以通过更新动态库使之支持确实的符号解决问题,分析过程中可以借助nm和ldd工具。

 

                                                                

                                                               关注公众号“奔跑的码仔”获取更过优质内容

  • 2
    点赞
  • 1
    评论
  • 2
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值