Linux下搭建OCI环境



系统环境以及相关软件:

操作系统:Linux jabnih-VirtualBox 3.2.0-23-generic-pae #36-Ubuntu SMP Tue Apr 10 22:19:09 UTC 2012 i686 i686 i386 GNU/Linux

编译器:gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3

Automake automake (GNU automake) 1.11.1(下载链接(FTP下载): ftp://ftp.gnu.org/gnu/automake/

OCI版本:ocilib-4.0.1-gnu.tar.gz(下载链接:http://orclib.sourceforge.net/

 

另还有一些前提:

automake-1.11.1.tar.gz 这个很恶心,在make oci的时候提示缺少automake-1.11但是装了1.11就会提示版本太老,中间提示说某个东西使用的是1.11.1,装了最新的1.15提示说是1.11创建....芭啦芭啦)。

还需要下载:

oracle-instantclient11.2-basic-11.2.0.3.0-1.i386.rpm

oracle-instantclient11.2-devel-11.2.0.3.0-1.i386.rpm

oracle-instantclient11.2-sqlplus-11.2.0.3.0-1.i386.rpm

下载链接(根据系统选择合适版本):

http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html

 

普及知识:

Linux下源码安装三步走:./configure && make && make install

 

注:我是安装完后才写的,如有错误请直接喷

备注:

Linux在一台虚拟机上,Oracle安装在另一台虚拟机Xp上,通过远程访问

Linux下搭建OCI环境_第1张图片 

安装过程:

(这里我使用的都是默认路径安装,如需指定路径,配置时使用--prefix前缀)

1.首先安装:

oracle-instantclient11.2-basic-11.2.0.3.0-1.i386.rpm

oracle-instantclient11.2-devel-11.2.0.3.0-1.i386.rpm

oracle-instantclient11.2-sqlplus-11.2.0.3.0-1.i386.rpm

这三个的安装参照http://docs.opsview.com/doku.php?id=opsview4.4:opspacks:templates:oracle-rdbms

上述如果可以用sqlplus连接Oracle就基本表示安装成功了

SQL*Plus测试:

Linux下搭建OCI环境_第2张图片 

这里使用的是远程连接,hr/hrusername pwd

2.安装automake-1.11.1

3.配置环境变量(~/.bashrc文件)

 

 

这里说明下 ,ORACLE_HOME配置的是上面basic客户端的路径

其中LD_LIBRARY_PATH/usr/local/lib是最后面安装好oci lib的路径

 

4.开始安装OCI

Linux下搭建OCI环境_第3张图片 

 

这是我开始存放的位置

 

解压ocilib-4.0.1-gnu.tar.gz

1.进入该目录,./configure配置

 

2. make

3. make install

 

 

FAQ:

途中可能遇到的问题:

1.oci_import.h:48:19: error: oci.h: No such file or directory

这个原因是之前./configure没有指定ocilib所需头文件位置,--with-oracle-headers-path来指定,安装客户端后会有一个头文件目录,默认路径下是/usr/include/oracle/11.2/client

找不到可以使用 find / -name oci.h来找出所在路径(这方法比较挫)

 

2.make的时候出现automake版本太老,之前提过

Linux下搭建OCI环境_第4张图片 

 

3.安装完写demo的时候

 

LD_LIBRARY_PATH没有配置好,参考前面配置

 

成功后的示例:

示例代码:

 

 

#include "ocilib.h"
#include 

int main()
{
	OCI_Connection * cn = NULL;

	if ( !OCI_Initialize(NULL, NULL, OCI_ENV_DEFAULT) )
	{
		return -1;
	}

	cn = OCI_ConnectionCreate("192.168.1.218:1521/orcl","hr", "hr", OCI_SESSION_DEFAULT);
	if ( cn != NULL )
	{
		printf("%s\n", OCI_GetVersionServer(cn));

		OCI_ConnectionFree(cn);
	}
	
	OCI_Cleanup();

	return 0;
}


 

 

编译

 

执行

 

你可能感兴趣的:(C/C++)