zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Redis简介(数据结构,哨兵、集群和SpringDataRedis)
    FastDFS + Nginx
    Dubbo
    Ubuntu下Zookeeper的安装和基本使用
    RMI简介
    RPC
    各大技术团队的博客
    天了噜,为什么外链css要放在头部,js要放在尾部?
    月经帖 | 2019.11
    前端面试知识点
  • 原文地址:https://www.cnblogs.com/blueyunchao0618/p/11542425.html
Copyright © 2011-2022 走看看