编译小结(9)Solaris下编译时碰到的referenced symbol not found问题

本文解决了在 Solaris 下编译程序时遇到的“symbol_ZN11TiXmlString8nullrep_E: referenced symbol not found”错误。通过使用ldd -d *.so检查依赖,并将相关类加入Makefile进行重新编译,成功解决了该问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    最近在Solaris下运行编译好的一个程序时,莫名其妙老是报"symbol _ZN11TiXmlString8nullrep_E: referenced symbol not found"

即"参照的符号没有找到",问题是同样的Makefile脚本在AIX,HPUX下编译出来的程序并没有碰到这种问题。

   后来只在官网(http://docs.oracle.com/cd/E26926_01/html/E25910/chapter3-29.html)找到了一点相关的资料。

   其中有句话: 如果在使用 ldd(1) 时指定 -d 选项,将显示每个依赖项并处理所有即时引用重定位。如果无法解析引用,则会生成诊断消息。

     使用# ldd -d *.so 检查了下,果然可以看到下面的信息:

        

    这些类之前都是封装在公共静态库中的,不知为啥在Solaris下为啥会出现这种问题,但尝试出来的解决方法是,依ldd -d 查出信息,

找到相关的类,将其加入到当前Makefile的待编译文件列表中,一起编译即可。

    在这记一下,以防以后忘记.


MAIL: xcl_168@aliyun.com

BLOG: http://blog.youkuaiyun.com/xcl168


 


   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值