golang go-oci8配置及问题解决方法

截止到目前(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,注意安装的时候那几个选项:

golang go-oci8配置及问题解决方法_第1张图片

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

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

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

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

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

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

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

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

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

golang go-oci8配置及问题解决方法_第2张图片

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

golang go-oci8配置及问题解决方法_第3张图片

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

golang go-oci8配置及问题解决方法_第4张图片

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

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

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

golang go-oci8配置及问题解决方法_第5张图片

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

golang go-oci8配置及问题解决方法_第6张图片

这是因为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就啥事没有,非常的好用。

你可能感兴趣的:(golang)