linux c oci 配置环境 编程 详解
最近在做linux下的c与oralce的操作。为了直接操作oracle数据的内核,是存取的更快,我选择了OCI——oracle提供的c语言接口,来作为开发的工具。 首先我先查了很多关于OCI提供的函数资料,这些资料如果你有需要联系我,我会发到你的邮箱里:yzzhang.gw.con@163.com这是我的邮箱; 下面我先说一下在linux用c去操作oracle需要什么样的
最近在做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)
)
)
到此,程序完全可以运行,两天的劳动没有白费,希望写出来,能给跟我遇到同样问题的人一点点的提示。
更多推荐
所有评论(0)