尝试构建使用 oracle-instantclient 的项目时,出现错误:
/usr/bin/ld: cannot find -lclntsh
collect2: error: ld returned 1 exit status
make: *** [Makefile:10: build] Error 2
在instantclient-basic-linux.x64-[VERSION].zip包中- 缺少此文件/lib(或仅仅是密钥)lclntsh,但有这个:libclntsh.so。
这里提到了这个库:
/home/test/go/src/github.com/mattn/go-oci8/README.md:Libs: -L${libdir} -lclntsh
/home/test/go/src/github.com/mattn/go-oci8/oci8.pc:Libs: -L${libdir} -lclntsh
/home/test/go/src/github.com/mattn/go-oci8/.travis.yml: echo "Libs: -L$ORACLE_HOME/lib -Wl,-rpath,$ORACLE_HOME/lib -lclntsh";
我手动指定了这些文件中 oracle-instantclient 内容的路径 - 就我而言,它在这里:
/usr/lib/oracle/19.10/client64/lib/
所以 :
prefix=/usr
includedir=${prefix}/include/oracle/19.10/client64
libdir=${prefix}/lib/oracle/19.10/client64/lib
但没有任何帮助。
附言:
declare -x ORACLE_HOME="/usr/lib/oracle/19.10/client64"
declare -x LD_LIBRARY_PATH="/usr/lib/oracle/19.10/client64/lib/"