1 背景
之前公司里有一個(gè)使用Go的Prometheus Exporter項(xiàng)目,由于項(xiàng)目中使用了rana/ora.v4依賴(lài)來(lái)連接Oracle數(shù)據(jù)庫(kù),而這個(gè)依賴(lài)本身又依賴(lài)于Oracle的oci8洼专。
由于多個(gè)產(chǎn)品線依賴(lài)于這個(gè)項(xiàng)目,而維護(hù)項(xiàng)目的老哥已經(jīng)離職闷愤,導(dǎo)致沒(méi)有人知道這玩意怎么編譯疼燥,因此需要重新找到編譯此項(xiàng)目的方法。
2 環(huán)境
Linux CentOS
go1.13.5 linux/amd64
3 安裝oci-8
3.1 下載rpm包
要安裝oci-8鲫懒,首先需要Oracle的Instant Client Package里12版本的basic和dev模塊嫩实,下載地址。
下載需要oracle帳戶窥岩,自行注冊(cè)即可甲献;下載鏈接選擇rpm包。
3.2 安裝rpm包
將oracle-instantclient12.2-basic-12.2.0.1.0-1.x86_64.rpm和oracle-instantclient12.2-devel-12.2.0.1.0-1.x86_64.rpm下載到隨便哪個(gè)目錄下后颂翼,
執(zhí)行
rpm -i oracle-instantclient12.2-basic-12.2.0.1.0-1.x86_64.rpm
rpm -i oracle-instantclient12.2-devel-12.2.0.1.0-1.x86_64.rpm
進(jìn)行安裝晃洒。
執(zhí)行
rpm -ql oracle-instantclient12.2-basic-12.2.0.1.0-1.x86_64
rpm -ql oracle-instantclient12.2-devel-12.2.0.1.0-1.x86_64
查詢(xún)安裝地址。
3.3 配置pkg-config
mkdir -p /usr/lib/pkgconfig/
touch oci8.pc
oci8.pc的內(nèi)容如下所示:
libdir=/usr/lib/oracle/12.2/client64/lib
includedir=/usr/include/oracle/12.2/client64/
glib_genmarshal=glib-genmarshal
gobject_query=gobject-query
glib_mkenums=glib-mkenums
Name: oci8
Description: oci8 library
Libs: -L${libdir} -lclntsh -locci
Cflags: -I${includedir}
Version: 12.2
在.bash_profile或.bash_rc里添加下列語(yǔ)句朦乏,執(zhí)行source使其生效:
export PKG_CONFIG_PATH=/usr/lib/pkgconfig/
3.4 配置動(dòng)態(tài)鏈接庫(kù)
在/etc/ld.so.conf.d/目錄下創(chuàng)建文件oracle.conf球及,內(nèi)容如下:
/usr/lib/oracle/12.2/client64/lib
然后執(zhí)行l(wèi)dconfig
4 執(zhí)行項(xiàng)目編譯
至此項(xiàng)目需要的oci8依賴(lài)就搞定了。我們項(xiàng)目中直接存放了prometheus的編譯工具——promu呻疹,為項(xiàng)目配置好目錄結(jié)構(gòu)后吃引,執(zhí)行./promu build即可完成編譯。