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

  • 相关阅读:
    Rotate Image,N*N矩阵顺时针旋转90度
    JumpGame,JumpGame2
    WildcardMatching和Regex,通配符匹配和正则表达式匹配
    Multiply Strings,字符串相乘
    TrappingRainWater
    300万PV的ASP.NET网站使用阿里云的配置建议
    java 学习 安卓学习
    如何学习Yii
    Lemon开源OA
    JAVA-进行Java Web项目开发需要掌握的技术
  • 原文地址:https://www.cnblogs.com/blueyunchao0618/p/11542425.html
Copyright © 2011-2022 走看看