您的位置:首页 > 运维架构 > Linux

linux c oci 配置环境 编程 详解

2014-10-23 10:56 429 查看
最近在做linux下的c与oralce的操作。为了直接操作oracle数据的内核,是存取的更快,我选择了OCI——oracle提供的c语言接口,来作为开发的工具。

首先我先查了很多关于OCI提供的函数资料,这些资料如果你有需要联系我,我会发到你的邮箱里:yzzhang.gw.con@163.com这是我的邮箱;

下面我先说一下在linux用c去操作oracle需要什么样的环境;

a;oralce的客户端是必须的,

b;oracle的sdk也是必须的;

以上两个软件你可以到这个网站去下载:http://www.oracle.com/technology/software/tech/oci/instantclient/index.html

我在的rpm版本的,这样的话,省去了很多的配置环境的过程。

安装指令: rpm -ivh 你下载的rpm包的名称(要全称)

安装完以后,在编一个简单的测试代码(这个我就不提供了);

最后就是最主要的编译了:gcc

就是这个gcc用去了我2天的时间,其中的参数,令我很头疼,不过,终于搞定:

gcc指令:gcc -o t -I/usr/include/oracle/10.2.0.4/client -L/usr/lib/oracle/10.2.0.4/client/lib -lclntsh OCITest.c

(同文件的路径) (动态库的路径)

如果,你是默认装,完全可以用我提供的指令。如果你指定了路径,那就必须把路径修改;

这样的话,你完全可以编译成功。我很高兴,终于编译成功了,但是,令我头疼的还在后面呢。

我执行程序,出现了错误:error while loading shared libraries: libclntsh.so.10.1: cannot open shared object file: No such file or directory

我初步分析是动态库的问题,花了2个小时,查查了动态库的有关资料。才知道linux下有一个/ect/ld.so.conf的文件,这个文件是存储动态库路径的。你必须把路径加入到这个文件中:echo "/usr/lib/oracle/10.2.0.4/client/lib ">>/etc/ld.so.conf

加入完之后,本以为可以执行了,但是还出现错误,在查查了资料,原来还得提交。

执行:/sbin/ldconfig

还需要在usr/lib/oracle/10.2.0.4/client 下建立network,然后在network下建立admin,在admin下建立tnsnames.ora,其中tnsnames.ora要修改权限,在root用户下把器改为所有用户的都能执行。chmod 777 tnsnames.ora

内容如下: 192.168.1.201 = //名字任意,对应于OCIServerAttach(srvhp,p_err,(text *)"192.168.1.201..)第三个参数

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.201)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = orcl)

)

)

到此,程序完全可以运行,两天的劳动没有白费,希望写出来,能给跟我遇到同样问题的人一点点的提示。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: