Появляется ошибка /usr/bin/ld: cannot find -lclntsh

При попытке собрать проект, использующий 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 - отсутствует этот файл/либа (или просто ключ) 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/"

Ответы (1 шт):

Автор решения: миха капа

В общем, немного детальнее изучив вопрос, я нашёл файл oci8.pc в глубине проекта: vendor/github.com/mattn/go-oci8/oci8.pc В этом файле я поменял значения оракл на свои: было 12.1, а стало 19.10

prefix=/usr
includedir=${prefix}/include/oracle/19.10/client64
libdir=${prefix}/lib/oracle/19.10/client64/lib

Name: oci8
Description: Oracle Instant Client
Version: 19.10
Cflags: -I${includedir}
Libs: -L${libdir} -lclntsh

Запустил сборку проекта и всё получилось.

Done.
go  build -o ./dist/oracle-plugin_linux_amd64 ./pkg
→ Ссылка