在64位Win10环境编译依赖go-oci8的程序
2020-04-09 本文已影响0人
猫和芝士蛋糕
背景
由于要重构公司的监控项目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=<instaclient-install-dir> // 替换为instantclient_12_1所在的路径
gcc=<tdm-gcc-install-dir> // 替换为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 添加值
<tdm-gcc-install-dir>\bin
- 变量Path 添加值
<instaclient-install-dir>
- 创建变量PKG_CONFIG_PATH 添加值
<path-to->\oci8.pc
- 重启电脑使环境变量生效