symbol lookup error:undefined symbol

symbol lookup error:undefined symbol

通过一个实例,引入这个问题。特在此说明一下,搞清楚原因。

问题:

向设备移植openvas时遇到一个问题。

 

运行openvassd,报错,在此之前我已经将libgio-2.0.so.0库移植到设备上,

libgio-2.0.so.0是安装glib-2.0 (版本号2.42.1)时一块安装的库。

初看错误,以为是libgio-2.0.so.0库有问题,没有定义g_signal_accumulator_first_wins.

分析:

 

nm libgio-2.0.so.0库,发现有符号g_signal_accumulator_first_wins.

openvassd怎么会找不到这个符号的定义呢?

刚开始以为是库的路径有问题,

执行ldconfig -v|grep gio

 

 

发现链接的库就是新的库(版本2.42.1安装的库),

这时候查看了一下,安装glib-2.0时,make install的日志文件,发现glib-2.0安装时,一共安装了

libglib-2.0.so.0.4200.1

libgmodule-2.0.so.0.4200.1

libgthread-2.0.so.0.4200.1

libgobject-2.0.so.0.4200.1

libgio-2.0.so.0.4200.1

五个库,

查看了gobject的符号,

 

 

发现了问题,两个库都有符号g_signal_accumulator_first_wins,

一个是U类型,一个是T类型。

有什么不同,是不是这个不同导致的问题?

 

关于U类型和T类型的说明如下:

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

U类型:该符号未定义过,需要自其它对象文件中链接进来。

 

此时,就很清楚了,没有链接上signal_accumulator_first_wins定义符号的库。也就是gobject库。

将gobject移植到设备上,发现问题解决了。

 

参考:man nm

https://www.cnblogs.com/itech/archive/2012/09/16/2687423.html

 

转载于:https://www.cnblogs.com/blueyunchao0618/p/11542425.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值