Невозможно скомпилировать код C ++ с использованием библиотеки OTLv4 - PullRequest
2 голосов
/ 29 декабря 2011

Не могли бы вы помочь мне выяснить, чего здесь не хватает?
Я пытаюсь скомпилировать программу на 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 ]

2 голосов
/ 29 декабря 2011

Я смог выяснить это сегодня днем, и теперь я смог его скомпилировать.
Поэтому, если кто-то сталкивается с той же проблемой, что и я, вот решение:

Добавьте путь $ORACLE_HOME/lib к вашему $LD_LIBRARY_PATH

Для удобства вы также можете добавить это в свой профиль .bashrc следующим образом:

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/bin
export LD_LIBRARY_PATH  

Вот и все!

PS:
Я пытался опубликовать это раньше, но мне показалось, что мне все еще не хватает точек репутации
чтобы ответить на мой вопрос раньше, чем за 8 часов.

0 голосов
/ 29 декабря 2011

Не знаю, зачем это нужно, но вы можете попробовать просто добавить -lnnz10 к вашей команде.

(Google показывает людей, использующих этот дополнительный аргумент, но не может быстро увидеть, кто объясняет, почему;кажется, что можно установить LD_LIBRARY путь или добавить $ORACLE_HOME/lib к /etc/ld.so.conf ...)

...