Как решить проблему с компоновщиком /usr/bin/ld: неопределенные ссылки при связывании библиотек Oracle [дубликат]Linux

Ответить
Anonymous
 Как решить проблему с компоновщиком /usr/bin/ld: неопределенные ссылки при связывании библиотек Oracle [дубликат]

Сообщение Anonymous »

Как мне создать следующий mwe?
$ g++ -o stackoverflow stackoverflow.cpp -I/home/myuser/Downloads
/instantclient_23_6/sdk/include -L/home/myuser/Downloads/instantclient_23_6 -l:libclntsh.so.23.1 -l:libocci.so.23.1
/usr/bin/ld: /home/myuser/Downloads/instantclient_23_6/libocci.so.23.1: undefined reference to `OCILobGetLength'
/usr/bin/ld: /home/myuser/Downloads/instantclient_23_6/libocci.so.23.1: undefined reference to `OCILobArrayWrite'
...

$ cat stackoverflow.cpp
#include

using namespace oracle::occi;
using namespace std;

int main() {
// Database connection details
string user = "mwe";
string password = "mwe";
string connectString = "itsonlyamwe";

Environment *env = nullptr;

env = Environment::createEnvironment(Environment::DEFAULT);

return 0;
}

$ ls /home/myuser/Downloads/instantclient_23_6
BASIC_LICENSE glogin.sql libclntsh.so.21.1 libclntshcore.so.22.1 libocci.so.20.1 network ucp17.jar
BASIC_README legacy.so libclntsh.so.22.1 libclntshcore.so.23.1 libocci.so.21.1 ojdbc11.jar uidrvci
SDK_LICENSE libclntsh.so libclntsh.so.23.1 libnnz.so libocci.so.22.1 ojdbc17.jar xstreams.jar
SDK_README libclntsh.so.10.1 libclntshcore.so libocci.so libocci.so.23.1 ojdbc8.jar
SQLPLUS_LICENSE libclntsh.so.11.1 libclntshcore.so.12.1 libocci.so.10.1 libociei.so pkcs11.so
SQLPLUS_README libclntsh.so.12.1 libclntshcore.so.18.1 libocci.so.11.1 libocijdbc23.so sdk
adrci libclntsh.so.18.1 libclntshcore.so.19.1 libocci.so.12.1 libsqlplus.so sqlplus
fips.so libclntsh.so.19.1 libclntshcore.so.20.1 libocci.so.18.1 libsqlplusic.so ucp.jar
genezi libclntsh.so.20.1 libclntshcore.so.21.1 libocci.so.19.1 libtfojdbc1.so ucp11.jar

$ ll /home/myuser/Downloads/instantclient_23_6/libocci.so
lrwxrwxrwx 1 myuser myuser 15 Dec 3 12:13 /home/myuser/Downloads/instantclient_23_6/libocci.so -> libocci.so.23.1*

$ ll /home/myuser/Downloads/instantclient_23_6/libclntsh.so
lrwxrwxrwx 1 myuser myuser 17 Dec 3 12:13 /home/myuser/Downloads/instantclient_23_6/libclntsh.so -> libclntsh.so.23.1*

$ ls /home/myuser/Downloads/instantclient_23_6/sdk/include
jzndom.h nzt.h oci.h ocidfn.h odci.h oraxml.hpp oro.h xmldf.h xmlsoap.h
jznerr.h occi.h oci1.h ociextp.h ons.h oraxmlcg.h ort.h xmlerr.h xmlsoap.hpp
jznev.h occiAQ.h oci8dp.h ocijson.h opmnlist.h oraxsd.h xa.h xmlev.h xmlsoapc.hpp
jznotn.h occiCommon.h ociap.h ocikpr.h orajson.h oraxsd.hpp xml.h xmlotn.h xmlurl.h
jzntypes.h occiControl.h ociapr.h ociver.h orastruc.h ori.h xml.hpp xmlotn.hpp xmlxptr.h
ldap.h occiData.h ocidef.h ocixmldb.h oratypes.h orid.h xmlctx.hpp xmlproc.h xmlxsl.h
nzerror.h occiObjects.h ocidem.h ocixstream.h oraxml.h orl.h xmldav.h xmlsch.h xmlxvm.h

Я получил библиотеки и включил файлы со страницы загрузки Oracle.
Я прочитал /usr/bin/ld: не могу найти -ldlib / usr/bin/ld: не могу найти -lcblas /usr/bin/ld: не могу найти -llapack установка пакетов разработки — это извлечение sdk. Результат показан выше.
ChatGPT предлагает попробовать полные пути, например
g++ -o occi_demo occi_demo.cpp \
-I/home/myuser/Downloads/instantclient_23_6/sdk/include \
/home/myuser/Downloads/instantclient_23_6/libclntsh.so \
/home/myuser/Downloads/instantclient_23_6/libocci.so

однако это привело к той же ошибке связывания.
$ cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.5 LTS"


Подробнее здесь: https://stackoverflow.com/questions/792 ... ing-oracle
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»