近日,用到Oracle10.2.0.2编译一个程序,要把Oracle更新到Oracle10.2.0.4,没想到居然遇到了问题, /usr/bin/ld: warning: libstdc++.so.5, needed by /home/oracle/OraHome1/lib/libocci.so, may conflict with libstdc++.so.6 难道Oracle10.2.0.4的会依赖与低版本的标准C++库,开始有点不相信,不过,适用ldd命令之后,傻眼了, ldd 10.2.0.2的结果 [root@localhost lib]# ldd libocci.so.10.1 ldd 10.2.0.4的结果 [root@localhost lib]# ldd libocci.so.10.1 果然,高一点版本的oracle居然依赖libstdc++.so.5 ,程序和所用的包都是在libstdc++.so.6上的,重新编译所有的包是不可能的。 最后得到接个解决方按: 1) downgrade the oracle to 10.2.0.2. 2) Append the libstdc++.so.5 to package, and use command “ cd /usr/lib; ln /opt/webex/imds/lib/so/libstdc++.so.5.0.7 libstdc++.so.5” By this way, when compiling, compiler will report : /usr/bin/ld: warning: libstdc++.so.5, needed by /home/oracle/OraHome1/lib/libocci.so, may conflict with libstdc++.so.6 I am still not sure whether will affect the act 3) Build all library which imds is using, include TP, WDMS, Jabber decrypt. It is very hard and painful. 4) Upgrade oracle to 11 个人认为,方案4会更好一些。 方案2在尝试中,根据调查,最好不要在一个程序中同时依赖 libstdc++.so.5和libstdc++.so.6。 如果同时依赖这两个个库,结果,呵呵难以预料。没错还好,有错的话,你就很难找到原因了!! |
|