资讯专栏INFORMATION COLUMN

DSO missing from command line原因及解决办法

Aldous / 4230人阅读

摘要:开始,其中的开始把默认打开,这样一来,不会再自动递归地解析链接的,而需要由用户来一一指定。检查的版本,方法很简单这样做的好处在于当有变化,甚至接口发生变化时,编译时就能报错。

最近项目正经历着一次更新,一系列编译工具都进行了大版本的升级,随时而来的是,原本正常编译的代码出现了大量的warning,最终编译失败,其中一个问题困扰了比较长的时间,虽然fix的方法不难,但是一直不清楚根本原因,通过大量的google,终于找到的原因,特地记录一下。

先把主要的参考文章写一下:
Understanding DSO link change
Tool Chain Transition

主要是下面这行错误:

error adding symbols: DSO missing from command line

场景是:

我们有一个shared libA中,定义了函数foo()

另一个静态库libB显示地链接了libA

一个可执行文件bin_c显示地链接了libA

那么问题来了,如果bin_c中调用了函数foo(),那么编译能不能通过?
在binutils<2.22时,ld正常完成了,bin_c对于foo的调用经由libB,传递到了libA,链接成功。
但是当binutils>=2.22时,编译出错了,ld会报上面的错,告诉你foo这个symbol解析不到,这时,我们需要编译bin_c时,显示地链接libA才可以通过。
binutils2.22开始,其中的ld开始把--no-copy-dt-needed-entries默认打开,这样一来,ld不会再自动递归地解析链接的lib,而需要由用户来一一指定。

PS:检查binutils的版本,方法很简单:

ld -v

这样做的好处在于当libA有变化,甚至foo接口发生变化时,编译时就能报错。

另外,还以一个ld的选项--allow-shlib-undefined,作用是允许在动态库中存在未解析到的函数symbol,至于理由可以自行查看man ld,因为有些项目就是在运行时才能决定使用的动态库, ld的manual中也举了一个相应的例子。

时间仓促,没有贴代码上来,而且一定还有没有深入到的地方,日后再来完善,如果有不对的地方,欢迎指正!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/7748.html

相关文章

  • TensorFlow 安装笔记

    摘要:而且我们可以看到他自动帮我们安装了,,等等需要注意的是最后会出现这里选择才能把加入环境变量中,然后才能使用不然之后就得手动配置。来安装支持的。步骤中下载太慢了,需要个小时,还是直接在线安装吧,先下载这个,然后这个只需要分钟左右。 前言 最近上了几门深度学习的公开课,还是觉得不过瘾,总觉得要搞一个框架来试试。那么caffe,tensorflow,torch等等选哪一个呢?经过一番比较我还...

    2bdenny 评论0 收藏0
  • TensorFlow 安装笔记

    摘要:而且我们可以看到他自动帮我们安装了,,等等需要注意的是最后会出现这里选择才能把加入环境变量中,然后才能使用不然之后就得手动配置。来安装支持的。步骤中下载太慢了,需要个小时,还是直接在线安装吧,先下载这个,然后这个只需要分钟左右。 前言 最近上了几门深度学习的公开课,还是觉得不过瘾,总觉得要搞一个框架来试试。那么caffe,tensorflow,torch等等选哪一个呢?经过一番比较我还...

    tommego 评论0 收藏0
  • TensorFlow 安装笔记

    摘要:而且我们可以看到他自动帮我们安装了,,等等需要注意的是最后会出现这里选择才能把加入环境变量中,然后才能使用不然之后就得手动配置。来安装支持的。步骤中下载太慢了,需要个小时,还是直接在线安装吧,先下载这个,然后这个只需要分钟左右。 前言 最近上了几门深度学习的公开课,还是觉得不过瘾,总觉得要搞一个框架来试试。那么caffe,tensorflow,torch等等选哪一个呢?经过一番比较我还...

    waruqi 评论0 收藏0
  • TensorFlow 安装笔记

    摘要:而且我们可以看到他自动帮我们安装了,,等等需要注意的是最后会出现这里选择才能把加入环境变量中,然后才能使用不然之后就得手动配置。来安装支持的。步骤中下载太慢了,需要个小时,还是直接在线安装吧,先下载这个,然后这个只需要分钟左右。 前言 最近上了几门深度学习的公开课,还是觉得不过瘾,总觉得要搞一个框架来试试。那么caffe,tensorflow,torch等等选哪一个呢?经过一番比较我还...

    617035918 评论0 收藏0
  • 使用Nginx配置mp4视频播放踩坑记录

    摘要:网上很多的解决办法是使用这个压缩包来配置,但是在一直无法正常的进行编译,同时也无法正常的使用命令添加到的目录下,同时大部分的说法是重新编译,对于已经有线上业务的环境这种做法非常不靠谱,没办法平滑的迁移。 一、环境配置 Nginx : Tengine(2.1.1)/ Nginx(1.6.2) 二、安装步骤1、下载/ngx_http_enhance_mp4_module执行命令: cd ...

    v1 评论0 收藏0

发表评论

0条评论

Aldous

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<