最近在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.csdn.net/xcl168