• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
可爱飞行猪
博客园    首页    新随笔    联系   管理    订阅  订阅
Ubuntu 12.10 x64 Oracle11g Pro *c/c++ 环境配置

一开始在Oracle的bin目录中调用proc会有很多错误,找不到库,然后编译错误等等。下面说一下我的环境配置过程:

1)设置动态库路径:

可以到etc/profile里面加入,不过我是写到~/.bashrc文件里的,加入下面的语句:

LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib:/usr/local/lib;
export LD_LIBRARY_PATH

重新打开终端就可以了。

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
/usr/lib/gcc/x86_64-linux-gnu/4.4/include/stddef.h
/usr/lib/syslinux/com32/include/bitsize/stddef.h
/usr/lib/syslinux/com32/include/stddef.h
/usr/src/linux-headers-3.5.0-17/include/linux/stddef.h
/usr/include/linux/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下的环境搭建,先写到这里。

posted on 2013-03-06 00:07  可爱飞行猪  阅读(852)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3