共计 1820 个字符,预计需要花费 5 分钟才能阅读完成。
Golang 连贯 Oracle 须要装置 Oracle Full Client 或 Instant Client
Oracle 的 Instant Client 套件下载地址
# 抉择 Instant Client for Linux x86-64 下载包如下:
instantclient-basic-linux.x64-21.1.0.0.0.zip
instantclient-sqlplus-linux.x64-21.1.0.0.0.zip
instantclient-sdk-linux.x64-21.1.0.0.0.zip
#都解压到 instantclient_21_1 这个目录, 间接解压会解压到 instantclient_21_1 目录
unzip instantclient-basic-linux.x64-21.1.0.0.0.zip
unzip instantclient-sdk-linux.x64-21.1.0.0.0.zip
unzip instantclient-sqlplus-linux.x64-21.1.0.0.0.zip
#打印 instantclient_21_1 目录的门路
pwd
/home/oracle/instantclient_21_1
装置 pkg-config
CentOS 自带了 pkg-config, 这里不在装置
# 打印 pkg-config 版本
pkg-config --version
创立配置文件 oci8.pc
vim /home/oracle/oci8.pc
oci8.pc 文件内容如下:
prefix=/home/oracle/instantclient_21_1
libdir=${prefix}
includedir=${prefix}/sdk/include/
glib_genmarshal=glib-genmarshal
gobject_query=gobject-query
glib_mkenums=glib-mkenums
Name: oci8
Description: oci8 library
Libs: -L${libdir} -lclntsh
Cflags: -I${includedir}
Version: 21.1
配置环境变量
vim /etc/profile
在最初增加如下环境变量
# Oracle 的 OCI 套件
export LD_LIBRARY_PATH=/home/oracle/instantclient_21_1
# oci8.pc 文件所在门路
export PKG_CONFIG_PATH=/home/oracle
使配置失效
source /etc/profile
运行 Golang 连贯 Oracle 报错一:
# github.com/mattn/go-oci8
In file included from ../github.com/mattn/go-oci8/c_helpers.go:3:0:
./oci8.go.h:1:17: fatal error: oci.h: No such file or directory
#include <oci.h>
^
compilation terminated.
是因为配置的环境变量,oci8.pc 文件所在门路不对, 找不到 oci8.pc 文件导致的
留神这个门路配置对
export PKG_CONFIG_PATH=/home/oracle
运行 Golang 连贯 Oracle 报错二:
dyld: Library not loaded: @rpath/libclntsh.dylib.19.1
Referenced from: /var/folders/_f/n3km_s7j6_9f8qzpkf9w395h0000gn/T/go-build114883360/b001/exe/oracleoci8
Reason: image not found
增加软链接, 解决报错
ln -s /home/oracle/instantclient_21_1/libclntsh.so.21.1 /usr/lib/libclntsh.so
ln -s /home/oracle/instantclient_21_1/libocci.so.21.1 /usr/lib/libocci.so
ln -s /home/oracle/instantclient_21_1/libociei.so /usr/lib/libociei.so
ln -s /home/oracle/instantclient_21_1/libnnz21.so /usr/lib/libnnz12.so
正文完