Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1915942
  • 博文数量: 261
  • 博客积分: 8073
  • 博客等级: 中将
  • 技术积分: 2363
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-10 15:23
文章分类

全部博文(261)

文章存档

2013年(1)

2012年(1)

2011年(50)

2010年(34)

2009年(4)

2008年(17)

2007年(55)

2006年(99)

分类:

2011-07-18 13:01:18

在RHEL 5.5中安装了oracle 10.2.0.4。0,并使用自带的libocci.so进行数据库连接。
 
RHEL 5.5默认编译环境为gcc 4.1.2,编译测试程序时,提示:
 
/usr/bin/ld: warning: libstdc++.so.5, needed by /usr/lib/oracle/10.2.0.1/client/lib//libocci.so, may conflict with libstdc++.so.6
 
 
编译过程并没有出错。但是当运行测试程序时,发生了crash,并报如下错误:
 
....
*** glibc detected *** free(): invalid pointer: ... ***
....
 
    结合编译时的警告输出,估计是:构建libocci.so实用的gcc版本和构建测试程序实用的gcc版本不一致导致的。
 
于是,下载了
库文件  :instantclient-basic-linux-x86-64-11.2.0.2.0.zip
头文件  :instantclient-sdk-linux-x86-64-11.2.0.2.0.zip
下载地址:
 
 
经过测试,我们所用到的oracle occi 11.2.0.2.0版本的接口可以用于oracle 10g应用程序中。
 
究其原因,是由于构建occi库和构建应用程序所使用gcc版本不同导致的。
 
================== 后续 ========================================
    经过测试,虽然oracle occi 11.2.0.2.0可以用于连接oracle10g,但是Connection Pool在调用createConnection接口创建新连接时,速度很慢。
 
    其实oracle 10g安装后提供了两个occi版本:libocci10_296.so.10.1 和 libocci10_343.so.10.1。默认的libocci.so.10.1使用gcc 2.96构建的,使用的是libstdc++.so.5
而libocci10_343.so.10.1使用的是libstdc++.so.6。因此,当使用gcc 3.4以上的gcc版本构建应用程序时,应该使用libocci10_343.so.10.1。
 
注:gcc 3.4以后版本使用了新的ABI版本,使用libstdc++.so.6。

 
阅读(4477) | 评论(1) | 转发(0) |
0

上一篇:VIM配置

下一篇:交互式的rpm

给主人留下些什么吧!~~

robinchris2013-07-16 17:52:20

兄弟,您好!我遇到同样的问题,我按照您给的方法,下载并解压了两个压缩包到/dev/instantclient112下,同时讲环境变量LD_LIBRARY_PATH改为/dev/instantclient112,但编译仍然告警。还有哪没改啊?