在64位Win10环境编译依赖go-oci8的程序

背景

由于要重构公司的监控项目oracle_exporter,不能像以前那样修修补补后丢到虚拟机上测试,只能在开发机上大量进行调试。

然而开发机器是Win10,编译后各种报错,因为依赖的组件各种缺,没办法只能重新搞编译环境,搞了一天总算是搞完了。

版本一览

提醒:如果严格按照操作来之后还是报错,考虑下Oracle Instant Client Package的版本号的问题,我使用12.2的都过不了,替换为12.1的突然就可以用了。但是同事的mac用18.0都没问题,心塞的很。

依赖 版本信息
Windows 10 (x64) 1903 / 18362.720
Go 1.14.1
Oracle Instant Client Package - (Basic+SDK) 12.1.0.2.0
tdm-gcc 9.2.0

步骤

安装依赖

Oracle Instant Client (Basic + SDK)
64-bit tdm-gcc
tip:安装路径上不要有Program Files这样带空格的目录,识别的时候应该会有坑

安装Oracle Instant Client

  • 经过上一步,你在当前目录下会有两个zip压缩包,instantclient-basic-windows.x64-12.1.0.2.0.zip 和 instantclient-sdk-windows.x64-12.1.0.2.0.zip。版本号可能有所不同。
  • 分别将两个zip文件解压缩,得到两个同名的文件夹,然后合为同一个
  • 最终你得到一个名为instantclient_12_1的文件,里面包含一个sdk的文件夹和其余的一堆乱七八糟的文件


    效果图

安装tdm-gcc

tdm-gcc下载后是一个exe文件,直接点击安装,留意下安装路径就行。

创建空文件,命名为oci8.pc

ora= // 替换为instantclient_12_1所在的路径
gcc= // 替换为tdm-gcc的安装目录

oralib=${ora}\\sdk\\lib\\msvc
orainclude=${ora}\\sdk\\include

gcclib=${gcc}\\lib
gccinclude=${gcc}\\include

Name: OCI
Description: Oracle database engine
Version: 12.1
Libs: -L${oralib} -L${gcclib} -loci
Libs.private: 
Cflags: -I${orainclude} -I${gccinclude}

将ora和gcc的值填写下,确保使用\\作为路径分隔符

设置环境变量

此电脑-属性-高级系统设置-环境变量里添加环境变量

  • 变量Path 添加值 \bin
  • 变量Path 添加值
  • 创建变量PKG_CONFIG_PATH 添加值 \oci8.pc
  • 重启电脑使环境变量生效


参考链接:

go-oci8 on windows64

你可能感兴趣的:(在64位Win10环境编译依赖go-oci8的程序)