win10使用go-oci8操作oracle究极踩坑经历
2019-10-11 本文已影响0人
邵佳楠
该篇内容由个人博客点击跳转同步更新!转载请注明出处
win下面开发GO真的是艰难重重,继上次踩坑Kafka之后,现在又遇到Oracle操作的问题,费话不多说下面开始正题
go-oci8这个库貌似只支持oracle12g。。第一步先去官网下载客户端,地址:点击跳转一定要下载我图中圈出来的两个

下载完后将两个压缩包都解压到同一个目录中

添加环境变量如下图

接下来安装cygwin64安装的不要点太快,这两样要选择装一下
一个是pkg-config,一个是x86_64-w64-mingw32-gcc两个都安装最新版本,选择完直接下一步到最后


接下来安装mingw这个安装可能需要翻墙,这个你们自己想办法

一路next后把安装后的bin目录添加到环境变量

上面步骤完成后配置pkg-config,图中的地址这个是你.pc文件存放的地址,你可以随便定

接下来把go-oci8里面有一个oci8.pc文件复制到你上面配置的目录中,并且修改内容如下图,里面的目录啥的我就不说了,都是你上面步骤安装的目录自己根据自身目录进行配置。注意最后一行的-loci一定要写这个
prefix=E:/instantclient_12_1
exec_prefix=${prefix}
includedir=E:/instantclient_12_1/sdk/include
libdir=E:/instantclient_12_1/sdk/lib/msvc
gcclib=C:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\lib
gccinclude=C:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\include
glib_genmarshal=glib-genmarshal
gobject_query=gobject-query
glib_mkenums=glib-mkenums
Name: oci8
Description: Oracle Instant Client
Version: 12.1
Cflags: -I${includedir}
Libs: -L${libdir} -loci
loci这是一个库,windows下面没有,我们接下来手动生成这个库,将instantclient_12_1根目录的 oci.dll文件复制到mingw/bin目录下

打开cmd进入到该目录输入下面的两行代码进行编译
gendef oci.dll
等待这一点结束 会生成oci.def。然后输入下一行代码
dlltool -D oci.dll -d oci.def -l liboci.a
结束后就获取到了 liboci.a文件,复制他到cygwin64\lib目录下
接下来复制instantclient_12_1下的sdk整个目录到cygwin64的根目录下如图:



接下来还没结束,你想办法搞到 msvcp120.dll msvcr100.dll以及msvcr120.dll文件同样的放到主程序目录中。
好了接下来就全部结束按我上面的步骤走一次,基本全部问题都能解决
微信关注我哦!(转载注明出处)
关注我哦