Linux 编译安装OciLib 4.x.x
项目要用oracle , Windows的 OciLib 好弄, 今天安装到linux下 ,编译老是出错,最后几行如下:
checking for OCILIB install path... /usr/local
ls: cannot access *.html: No such file or directory
ls: cannot access *.css: No such file or directory
ls: cannot access *.png: No such file or directory
checking for OCILIB version... v4.2.1
checking for OCILIB options... import: linkage, charset = ansi
checking for Oracle home... defined by environment :
checking for Oracle OCI headers location... configure: error: variable not set or unable to guess
然后搜索 configure文件,最终发现是 oracle oci 的头文件的文件夹没找到;
然后到oracle官网下载 instantclient-sdk-linux 又是一阵折腾,不知道他抽什么疯,死活不能下载, 下载页点击跳转就到错误页了~~~
后来网上找了个下载,还好,能用(文件大小只有625KB), 地址:http://download.csdn.net/detail/lsxy117/5118691
-------------------更新---------------- 2020/07/01
instantclient 在这里下载: (需要注册,注册下就好了:)
https://www.oracle.com/database/technologies/instant-client/downloads.html
-----------------------------------------
但是下载解压后 configure 文件里的路径居然没有include文件夹的配置,尼玛,自己写了(约第12775行处):
# find out the Oracle public OCI headers path
if test "$ac_headers_path" = NO; then
if test "$ac_oracle_home" != NO; then
test_include_path=$ac_oracle_home/rdbms/public
if test -d "$test_include_path"; then
ac_headers_path=$test_include_path
else
test_include_path=$ac_oracle_home/rdbms/demo
if test -d "$test_include_path"; then
ac_headers_path=$test_include_path
else
echo "line 12775 ,lzpong add this ac_headers_path to $ac_oracle_home/include , need to download instantclient-sdk-linux-xx.xx.xx.zip to get includes file!!!!"
ac_headers_path=$ac_oracle_home/include
fi
fi
fi
fi
因为我是直接把sdk的include文件夹解压到 /usr/local/instantclient_12_1 的,所以 直接写了:
ac_headers_path=$ac_oracle_home/include
-------------------更新---------------- 2020/07/01
可以不用改`makefile`,直接参数指定
./configure CFLAGS="-O2 -m64" --with-oracle-lib-path=/usr/local/instantclient_12_1 --with-oracle-headers-path=/usr/local/instantclient_12_1/include
CFLAGS 参数很重要, -m64 表示编译为64位。
--with-oracle-lib-path 参数指定 lib 目录
--with-oracle-headers-path 参数指定 头文件目录
这样就应该不需要设置环境变量了, 不行在按下方设置咯~~
-----------------------------------------
然后要配置 环境变量的!!!
根据这里(http://ljhzzyx.blog.163.com/blog/static/3838031220107139322436/)配置了,没重新登录 没起作用, 于是直接执行了下:
export ORACLE_HOME=/usr/local/instantclient_12_1
export PATH=$ORACLE_HOME:$PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME
export TNS_ADMIN=$ORACLE_HOME/network/admin
export NLS_LANG="Simplified Chinese_china".ZHS16GBK
./configure
make
make install
至此, 已经安装好了 ^_^, 没有出错哦,
lib文件在 /usr/local/lib
头文件在 /usr/local/include
好了,可以使用 OciLib 4.2.1 了 ;
也可以查看他的 readme 文件, 可以搭配一些参数make install
Website : http://www.ocilib.net
GitHub : https://github.com/vrogier/ocilib
PS:不过这个库貌似默认是编译的 32位的, 如如何编译64位的, 看上面更新说明的CFLAGS参数。, 谢谢!