golang oracle配置文件,golang go-oci8配置及问题解决方法-Go语言中文社区

截止到目前(2020.01.19),golang语言里面连接oracle最合适的驱动是github.com/godror/godror,这个库用到了oracle官方开源的odpi-c,也没有乱七八糟的配置过程,推荐大家使用。

接下来是这篇文章要介绍的go-oci8了,要使用这东西配置很麻烦,下面进行配置过程记录。

开发环境配置

1.第一步,准备oracle与oci8相关的lib和include c语言头文件等

其实go-oci8官方文档写的言简意赅,要么完整安装oracle client,要么单独安装oracle instant client。大部分程序员的电脑里面都会安装oracle client,注意安装的时候那几个选项:

91de11f16edc79891cbc150841b35f52.png

如果你的机器里面之前安装oracle client的时候没有安装InstantClient ,可以再次运行oracle client的安装程序,选中InstantClient再安装一遍,安装的时候注意还是选择原来的路径,不要针对这次单独再弄个新路径。

第二种方式是从oracle网站单独下载oracle instantClient解压缩使用, oracle instantclient 大概70多M,注意还需要额外再下载一个2M多的SDK头文件,否则你下载的oracle instantClient缺少include和lib文件。

361fb3772fca1eec38cb0be7742d8453.png

看好,第二个需要下载的是像上面那样的带有SDK文字的2.7M的压缩包。

以上两种方式都可以让你的机器里面有oracle instantclient以及编译程序需要用到的.h头文件了。

2. 第二步,配置pkg-config相关的

我机器里面的pkg-config在mingw64里面,可以敲where pkg-config查看该文件位置,如下图:

bd25d5ea491c9db38faf336ba0abb18e.png

同时我发现我机器里面的mingw32的bin里面就没有这个pkg-config.exe文件,如果你的机器用的是mingw32的话看看是否换成mingw64就能找到这个文件了。

3.第三步,配置oci8.pc文件

如果编译程序时找不到oci8.pc文件会提示下面这样的错误:

38fd0229033ee2aa335de481ca972d9b.png

解决办法是新建一个PKG_CONFIG_PATH的环境变量,随便指向一个位置,后续把oci8.pc放到那个对应的位置即可。

57716a299c70d896e00d694f8aee7a34.png

oci8.pc这个文件可以从go-oci8目录里面找到。

08a994cb65e5b5e612b656450ed3597d.png

oci8.pc文件复制过去以后,需要用文本编辑工具修改oci8.pc里面的路径,把include和lib两个路径改为自己本机安装的oracle instant client路径。

然后验证一下pkg-config能不能找到这个oci8,可以在命令行敲pkg-config --cflags --libs oci8

如果出现的结果是这样的:

cc9935fef323adc896b51b51203e6727.png

并且后续编译的时候提示:

bfa9ba7db06b2baf91917c37ae32152d.png

这是因为oci8.pc里面的路径符号写的不对,windows平台不能用,要用/ ,这是我的oci8.pc里面的配置内容:

prefix=/devel/target/1.0

exec_prefix=${prefix}

oralib=D:/oracle/instantclient_12_2/sdk/lib/msvc

orainclude=D:/oracle/instantclient_12_2/sdk/include

gcclib=d:/mingw64/lib

gccinclude=d:/mingw64/include

glib_genmarshal=glib-genmarshal

gobject_query=gobject-query

glib_mkenums=glib-mkenums

Name: oci8

Version: 12.2

Description: oci8 library

Libs: -L${oralib} -L${gcclib} -loci

Libs.private:

Cflags: -I${orainclude} -I${gccinclude}

再次强调,即便是windows平台,路径符号也要用“/”!

最后的最后,go-oci8能正常编译了,但是有中文乱码问题,换成用github.com/godror/godror就啥事没有,非常的好用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值