当前位置:  技术问答>linux和unix

Linux平台下 OCCI 连接 Oracle数据库的链接错误

    来源: 互联网  发布时间:2016-03-17

    本文导语:                    Linux平台下 OCCI 连接 Oracle数据库的链接错误     本人在linux平台下使用eclipse做数据库的开发,在连接oracle数据库时出现了一个问题,希望各位linxu平台下开发高手给予指导。 由于我以...

                  Linux平台下 OCCI 连接 Oracle数据库的链接错误 

   本人在linux平台下使用eclipse做数据库的开发,在连接oracle数据库时出现了一个问题,希望各位linxu平台下开发高手给予指导。

由于我以前一直是在windows平台下做开发,所以对linux环境很是陌生。最开始的时候,我查看网上的资料,说是linux平台下使用occi连接oracle是比较好的选择,所以就使用了occi,但是刚开始碰到的问题跟我下面描述的问题基本是一样的,网上的兄弟们说那是因为老版的occi是用低版本的gcc编译器编译的,可能是因为不兼容导致,所以我昨天在oracle的官网下了一个最新的occi包,覆盖以后还是问题依旧,以下是安装包的自述文件

These files are required to build OCCI applications using the
gcc version 3.4.3 compiler on RedHat Linux (x86_64) AS 4.0.
The OCCI libraries shipped in the 10.2.0.3.0 release
are built with gcc 3.2.3 and are incompatible with gcc 3.4.3. 
These support files are for the Oracle 10.2.0.3.0 release for 
Linux X86_64. Since gcc binaries are compatible accross 3.4.3
and 4.0.1 versions, this patch can be applied for gcc 4.0.1 
also.

Installation Instructions
-------------------------
1) Take a backup of the following files in the Oracle 
   10.2.0.3.0 installation :-

    $ORACLE_HOME/lib/libocci10.a
    $ORACLE_HOME/lib/libocci.so.10.1
    $ORACLE_HOME/rdbms/public/occiCommon.h

   Preferably, these files should be backed up to 
   $ORACLE_HOME/lib/gcc323

2) Copy the files from this archive to appropriate 
   directories :-

    libocci10.a => $ORACLE_HOME/lib/
    libocci.so.10.1 => $ORACLE_HOME/lib
    occiCommon.h => $ORACLE_HOME/rdbms/public

3) Ensure that the gcc 3.4.3 compiler is setup and
   the default compiler to run(first in path). To
   revert back to gcc 3.2.3 compiler, restore the 
   backed up OCCI files to their original 
   directories.

Instant Client Installation
---------------------------
The OCCI dynamic library libocci.so.10.1 present in this
package can replace the default libocci.so.10.1 in the 
Oracle 10g R2 Instant Client Basic package for deploying 
OCCI applications.

Installing Patches
------------------
If any Oracle supplied patch install procedure regenerates
the client shared libraries, the newly generated libocci.so.10.1
in $ORACLE_HOME/lib will not be compatible with gcc 3.4.3. The
libocci.so.10.1 in this archive needs to be re-copied to 
$ORACLE_HOME/lib. 
覆盖以后所报的链接错误不一样,但总的来说问题是一样的,只是报错的未定义引用的函数名不一样

以下是我开发所用环境
eclipse3.3.1.1
linxu RedHat 4.5 x86_64
oracle 10g(10.1.0.2.0)
gcc version 3.4.6(3.4.3)在控制台中查看gcc版本是3.4.6,可是在eclipse的工程下,看见所include的却是3.4.3,我有点不明白。因为在eclipse中每建一个工程,编译器会自动include一些必须的文件


这是我eclipse使用oracle occi库所做的配置
/home/client/OraHome_1/rdbms/public   头文件
occi10                                库名
/home/client/OraHome_1/lib            库路径

#include "/home/client/OraHome_1/rdbms/public/occi.h"
using namespace oracle::occi;

int main(int argc, char* argv[])
{
Environment *env;
Connection  *conn;
env  = Environment::createEnvironment(Environment::DEFAULT);
conn = env->createConnection("usrname", "pwd", "db");
..............
..............
return 0;
}


在eclipse下编译后,链接时报出如下错误:
'/usr/bin/ld: skipping incompatible /usr/lib/libm.so when searching for -lm
/usr/bin/ld: skipping incompatible /usr/lib/libm.a when searching for -lm
/usr/bin/ld: skipping incompatible /usr/lib/libc.so when searching for -lc 
/usr/bin/ld: skipping incompatible /usr/lib/libc.a when searching for -lc
这些错误看起来可能是平台的问题,我的系统是64位,难道这些库是32位的吗?但是这个问题不影响我程序的运行,并不是问题的关键所在,随便写个其它的程序都报这个错,但是程序运行无误。应该算是一个警告吧

/home/client/OraHome_1/lib/libocci10.a(occiNumber.o)(.text+0x3285): In function `oracle::occi::Number::sin() const':: undefined reference to`lnxqtra'

 /home/client/OraHome_1/lib/libocci10.a(occiNumber.o)(.text+0x3314): In function `oracle::occi::Number::cos() const':: undefined reference to `lnxqtra'
这些错误的意思是不是说:在libocci10的库中调用了其它的库,比如occiNumber,而这个库中又使用了一些未定义的引用???下面还有很多其它被间接调用的库

/home/client/OraHome_1/lib/libocci10.a(occiNumber.o)(.text+0x33ab): In function `oracle::occi::Number::tan() const':: undefined reference to `lnxqtra

/home/client/OraHome_1/lib/libocci10.a(occiEnv.o)(.text+0x5b4): In function `oracle::occi::Environment::terminateEnvironment(oracle::occi::Environment*)':: undefined reference to `OCIHandleFree'

/home/client/OraHome_1/lib/libocci10.a(occiEnv.o)(.text+0x60c): In function `oracle::occi::Environment::getXAEnvironment(std::basic_string const&)':: undefined reference to `xaoEnv'

/home/client/OraHome_1/lib/libocci10.a(occiEnv.o)(.text+0x621): In function `oracle::occi::Environment::getXAEnvironment(std::basic_string const&)':: undefined reference to `xaoEnv'

/home/client/OraHome_1/lib/libocci10.a(occiEnv.o)(.text+0x646): In function `oracle::occi::Environment::getXAEnvironment(std::basic_string const&)':: undefined reference to `OCIHandleAlloc'

/home/client/OraHome_1/lib/libocci10.a(occiEnv.o)(.text+0x670): In function `oracle::occi::Environment::getXAEnvironment(std::basic_string const&)':: undefined reference to `OCIAttrGet'

.............................中间还有很多错误

/home/client/OraHome_1/lib/libocci10.a(occiEnvImpl.o)(.text+0x12ea): In function `oracle::occi::EnvironmentImpl::getXAConnection(std::basic_string const&)':: undefined reference to `OCIPHeapAlloc'

/home/client/OraHome_1/lib/libocci10.a(occiEnvImpl.o)(.text+0x157f): In function `oracle::occi::EnvironmentImpl::getCacheSortedFlush() const':: undefined reference to `OCIAttrGet'

/home/client/OraHome_1/lib/libocci10.a(occiAnyDataImpl.o)(.text+0x427c): In function `oracle::occi::AnyDataImpl::getAsRef() const':: undefined reference to `OCIObjectNew'

/home/client/OraHome_1/lib/libocci10.a(occiAnyDataImpl.o)(.text+0x42a4): In function `oracle::occi::AnyDataImpl::getAsRef() const':: undefined reference to `OCIAnyDataGetType'

/home/client/OraHome_1/lib/libocci10.a(occiAnyDataImpl.o)(.text+0x42db): In function `oracle::occi::AnyDataImpl::getAsRef() const':: undefined reference to `OCIAnyDataAccess'

/home/client/OraHome_1/lib/libocci10.a(occiAnyDataImpl.o)(.text+0x4340): In function `oracle::occi::AnyDataImpl::getAsRef() const':: undefined reference to `OCIObjectFree'

/home/client/OraHome_1/lib/libocci10.a(occiAnyDataImpl.o)(.text+0x4404): In function `oracle::occi::AnyDataImpl::getType() const':: undefined reference to `OCIAnyDataGetType'

collect2: ld returned 1 exit status
`make: *** [AGM] Error 1    

这个问题我思索了两三天了,急的我团团转,但还是没有头绪,望各位开发高手不吝赐教,先谢谢了!



|
打10.2.0.4的补丁,里面包含occi最新的补丁
贴Makefile出来,
另外,把gcc -v 的信息打出来。

我用rhel 5 x86_64 + oracle 10.2.0.4 的occi,连接时使用occi343的库,没有任何问题。

    
 
 

您可能感兴趣的文章:

  • linux/centos安装nginx常见错误及解决办法
  • linux安装codeblock 编译错误make: *** [all-recursive] 错误 1
  • Linux下怎样查c程序的错误号?程序出现错误:System error 32: Broken Pipe, 是什么原因?
  • 紧急求救:在LINUX下如何根据错误代码,查出对应的错误描述?
  • 在Linux系统上recv返回错误,通过errno得到的错误消息为"Interrupted system call"
  • FTP匿名登陆 LINUX 出现错误 linux FTP 550 permission
  • linux 编程获取错误信息有没相关资料?
  • windows下好使的函数到linux下怎么就段错误了呢?
  • linux中非正常关机,出现的错误如何解决?
  • 请问,我用turbo Linux,远程FTP报Password required, but none set错误
  • Linux硬件错误检查工具 mcelog
  • linux安装错误,怎么解决
  • Linux 下用什么函数查找socket上一次的错误?
  • Linux启动错误求助!
  • VM下的linux Socket程序怎么客户机一连接就出现Bad address的错误?
  • 我向linux内核里加载模块时出现段错误
  • Linux虚拟机启动出现错误
  • 为什么每次登录 linux 都出现这句错误信息呢?
  • linux源码包编译有错误
  • Linux下调用.so引发的段错误问题
  • linux下配置PHP 编译的时候出现错误
  • 在XP下使用VMWare安装了Linux AS 5.6之后,使用FTP工具可以远程连接Linux,而在cmd命令行中却连接不上,什么原因 ?
  • linux 有线连接了却显示有线连接断开是怎么回事
  • 请问unix/linux下动态连接库和静态连接库有什么区别?
  • LINUX中连接C++的库怎么连接.库在什么位置,还有什么特殊命令吗?
  • 在linux下可以使用dao方式连接数据库吗?可以连接musql吗?回答就给分!急
  • 在线请教:linux下用MySQL C API 连接MySQL 4.1.12出现的连接问题,提示升级客户端!!!!!!
  • ftp连接问题,就是linux连接windows ftp的问题,高手请进(在线等待)!!!!!
  • Linux下的C++程序怎么连接WIN2000下的SQL Server 2000?或者如何连接MySQL?
  • linux 下连接创建连接数据库程序,什么都可以 。谁知道300分
  • [疑问] [linux网络连接]Linuxmint网络连接
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux中静态链接库调用了另一个静态链接库
  • linux中都有哪些链接方式,创建链接的命令是什么?
  • linux下什么函数是用来“创建软链接和硬链接的呢“有么,今天突然想到这个问题。。
  • 急:请问SSH2链接是什么意思?在windows终端怎样具体操作来通过SSH2链接管理linux服务器?
  • linux下静态库使用:"未使用链接器输入文件,因为链接尚未完成"
  • 请以一个视频文件为例,说明一下linux的硬链接跟软链接的区别
  • 从Linux拷贝文件时,总出现符号链接错误时怎么回事?
  • linux链接问题!!
  • Linux下gcc编译时,如何以静态链接的形式编译?
  • 请问linux的链接库
  • 请问在高版本linux编译链接的程序如何在低版本Linux上运行
  • linux 编译的时候,如何与.a静态库做链接生成.elf文件?
  • SOS 在 linux 中如何用命令来判断一个文件是否为链接文件
  • Linux下的关于动态链接库
  • linux下cvs链接失败问题
  • linux下用ODBC链接Oracle怎么连啊?跪求具体方法!!!
  • 谁知道linux/unix下利用Schema读取校验xml的开源代码,给一个链接,谢谢!
  • linux下socket链接问题(java)
  • linux的动态链接库开发的时候,基类带有虚成员函数的话会找不到符号。
  • 用vnc链接linux远程桌面登录后立刻断开
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux iis7站长之家
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • secureCRT下Linux终端汉字乱码解决方法
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux c字符串中不可打印字符转换成16进制
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux
  • linux命令大全详细分类介绍及常用linux命令文档手册下载


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3