Невозможно скомпилировать код 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...)

Другие вопросы по тегам