超级程序猿Golang 入门资料+笔记Golang

win10使用go-oci8操作oracle究极踩坑经历

2019-10-11  本文已影响0人  邵佳楠

该篇内容由个人博客点击跳转同步更新!转载请注明出处

win下面开发GO真的是艰难重重,继上次踩坑Kafka之后,现在又遇到Oracle操作的问题,费话不多说下面开始正题

go-oci8这个库貌似只支持oracle12g。。第一步先去官网下载客户端,地址:点击跳转一定要下载我图中圈出来的两个

客户端

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

解压
添加环境变量如下图
环境变量
接下来安装cygwin64安装的不要点太快,这两样要选择装一下
一个是pkg-config,一个是x86_64-w64-mingw32-gcc两个都安装最新版本,选择完直接下一步到最后
gcc
pkg-config 设置环境变量把你刚才装的cygwin64路径添加到环境变量PATH中去,比如我安装在C:\cygwin64,那就在path中添加这个路径
接下来安装mingw这个安装可能需要翻墙,这个你们自己想办法
mingw
一路next后把安装后的bin目录添加到环境变量 环境变量
上面步骤完成后配置pkg-config,图中的地址这个是你.pc文件存放的地址,你可以随便定
pkg环境变量
接下来把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目录下 oci.dll

打开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的根目录下如图:


sdk 同样的把liboci.a复制到sdk/lib目录和sdk/lib/msvc目录下,编译工作大致完成接下来把instantclient_12_1\sdk\include目录下的所有文件都复制到go-oci8所在的文件夹下面 所有文件 复制完之后把instantclient_12_1目录下面的三个dll复制到你主程序的同级目录 三个dll
接下来还没结束,你想办法搞到 msvcp120.dll msvcr100.dll以及msvcr120.dll文件同样的放到主程序目录中。

好了接下来就全部结束按我上面的步骤走一次,基本全部问题都能解决

微信关注我哦!(转载注明出处) 关注我哦

上一篇 下一篇

猜你喜欢

热点阅读