红联Linux门户
Linux帮助

[紧急求助]关于在64位Linux(Redhat)上使用OCCI的问题

发布时间:2013-12-11 22:14:28来源:红联作者:sanluojiyi
各位大神,你们好!
小弟遇到了如题所示的问题,之前自己使用的Redhat是5.5 32位版本的,装的ORACLE自然也是32位,因此从未考虑32位和64位的问题。
项目中需要使用OCCI远程访问数据库,编写的程序以及接口在自己的电脑上运行均没有问题,放到测试服务器(64位Linux,64位ORACLE)上无法使用。
小弟也做过以下的测试,直接在测试服务器上编写一个小程序,就一个main函数,直接调用occi接口,以下是occi访问数据库的流程以及我的一段代码:
OCCI流程:
createEnvironment; //创建环境变量
createConnection; //通过传入用户名,密码,连接字符串来建立连接
createStatement; //建立statement对象
executeSQL; //执行相应的SQL语句
terminateStatement;
terminateConnection;
terminateEnvironment;

我在main函数中,一部分的代码:
Environment* pEnv = NULL;
bool bHasException = false;
try
{
pEnv = Environment::createEnvironment();
}
catch(...)
{
bHasException = true;
pEnv = NULL;
}
if(NULL == pEnv)
{
if (bHasException)
printf("Create Environment Exception!\n");
else
printf("Ceate Environment Failed!\n");

return -1;
}
printf("Create Environment Successed!\n");
....

由于测试机上是64位Linux, 安装的ORACLE也是64位的,因此在编译的时候我已经指定调用的OCCI库为ORACLE路径下的libocci.so,该库自然也是64位版本的,并且编译时还提示libstdc++.so.5的一个问题,也在编译时指定使用/usr/lib64/libstdc++.so.5,因此编译正常通过了,但是!!!问题在于执行以上的测试程序时,输出直接是“段错误”,无法catch到异常。

接着,小弟将自己32位机器上的libocci.so以及其他的一些依赖库拷贝到测试机上,并且在编译的时候指定使用拷贝过来的这32位occi库,指定/usr/lib/libstdc++.so.5,指定-m32参数,编译正常,执行的时候反而可以得到提示"Create Environment Exceptopn!",这里不明白为何同样的代码,一个可以catch到异常,一个不可以。但是更为关键的是不明白为何无法创建环境变量?

我在网上搜索一些OCCI的安装以及使用,也有网友是在64位Linux系统上安装OCCI并且编写程序访问数据库,但是他们似乎都没有遇到我这样的问题。因此来这里请教各位大神,该项目时间较紧,没想到都到现在了还在纠结环境的问题,如果有哪路好汉遇到过这样的问题或者能帮忙的,感激不尽!!!!

拜谢!!!
文章评论

共有 0 条评论