在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
一开始在Oracle的bin目录中调用proc会有很多错误,找不到库,然后编译错误等等。下面说一下我的环境配置过程: 1)设置动态库路径: 可以到etc/profile里面加入,不过我是写到~/.bashrc文件里的,加入下面的语句: LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib:/usr/local/lib; 重新打开终端就可以了。 2)编译问题有点多,我这里只写我目前遇到的问题,和我的解决办法 首先是编译跳出N多屏长度的error,终端上滚动条托会顶部也显示不完,最后只好编译的时候$ORACLE_HOME/bin/proc file.pc | more 分屏显示,看到有很多.h文件找不到,在网上查资料,发现需要去配置如下文件: $ORACLE_HOME/precomp/admin/pcscfg.cfg 进去一看,include里面包含了很多redhat和suse的路径,我这里可是用的ubuntu喔,果断把redhat和suse相关的路径都删除,但是这个时候我该写什么路径了,看看刚才编译的报错,有一个叫stddef.h的文件,这不是c的标准库的定义文件嘛,说明proc需要调用c语言的标准库,这不就好办了嘛,方法如下: 找标准库的头文件路径: sudo find / -name "stddef.h" 我的搜索结果如下: /usr/lib/gcc/x86_64-linux-gnu/4.7/include/stddef.h 第一个路径就是我需要的,其他的应该不是喔。当然我没有试验过,但是gcc的肯定没错,所以我这里使用第一个,将路径写道pcscfg.cfg文件中去即可。
好了继续编译... 这次proc filename.pc文件没有问题,proc生成了.c的c语言源文件,然后使用gcc filename.c -o main 又是错误,提示“致命错误:sqlca.h:没有那个文件或目录”,所以我马上使用find命令找到了这个文件的路径,然后gcc filename.c -I $ORACLE_HOME/precomp/public -o main依然错误,这次是login.c:(.text+0x1b9):对‘sqlcxt’未定义的引用,这一看应该还是没有链接到库文件。最后查资料,果然还有库文件需要说明,最后成功通过编译的完整命令如下: gcc login.c -I $ORACLE_HOME/precomp/public -L$ORACLE_HOME/lib -lclntsh -o main 最后执行main,成功运行... 好的这样就完成了pro*c/c++的环境搭建了。过两天再看看windows下的环境搭建,先写到这里。 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论