Невозможно скомпилировать код C++ с использованием библиотеки OTLv4
Не могли бы вы помочь мне выяснить, чего здесь не хватает?
Я пытаюсь скомпилировать программу на C++ с использованием библиотеки OTL 4, но получаю ошибку.
Окружающая среда Подробности:
- Я установил Oracle DB XE 10G на виртуальную машину Ubuntu 11.04.
- SQL * Plus и сам сервер работает как положено.
Код компиляции:
g++ -o <output>.exe <source>.cpp -I$ORACLE_HOME/rdbms/public -I$ORACLE_HOME/rdbms/demo -L$ORACLE_HOME/lib -lclntsh
Ошибка:
/usr/bin/ld: warning: libnnz10.so, needed by /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/lib/libclntsh.so, not found (try using -rpath or -rpath-link)
/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/lib/libclntsh.so: undefined reference to `nztSetAppDefaultLocation'
/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/lib/libclntsh.so: undefined reference to `nzos_DisableClientAuthentication'
/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/lib/libclntsh.so: undefined reference to `nzos_Create_Ctx'
/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/lib/libclntsh.so: undefined reference to `_intel_fast_memcpy'
/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/lib/libclntsh.so: undefined reference to `nzgbllsm_location_shared_memory'
/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/lib/libclntsh.so: undefined reference to `__intel_cpu_indicator'
/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/lib/libclntsh.so: undefined reference to `nzosSCCS_SetCRLCacheSize'
...a whole lot more undefined references...
/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/lib/libclntsh.so: undefined reference to `nzssGSL_GetSecretLength'
collect2: ld returned 1 exit status
Примечания об ошибке:
Когда я проверил, libnnz10.so
существует, когда я посмотрел в свой $ORACLE_HOME/lib
каталог.
2 ответа
Я смог выяснить это сегодня днем, и я получил его для компиляции сейчас.
Поэтому, если кто-то сталкивается с той же проблемой, что и я, вот решение:
Добавить $ORACLE_HOME/lib
путь к вашему $LD_LIBRARY_PATH
Для удобства вы также можете добавить это в свой .bashrc
профиль вроде так:
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/bin
export LD_LIBRARY_PATH
Это оно!
PS:
Я пытался опубликовать это ранее, но мне показалось, что мне все еще не хватает точек репутации.
чтобы ответить на мой вопрос раньше, чем через 8 часов.
Не уверен, зачем это нужно, но вы можете попробовать просто добавить -lnnz10
к вашей команде.
(Google показывает людям, использующим этот дополнительный аргумент, но не смог быстро увидеть, что кто-то объясняет почему; LD_LIBRARY
путь или добавить $ORACLE_HOME/lib
в /etc/ld.so.conf
...)