LINUX.ORG.RU

не могу победить «error while loading shared libraries: libclntsh.so.11.1: cannot open shared object file: No such file or directory»

 ,


0

1

дано - Centos7

Суть проблемы: ошибка при запуске приложения которое использует OCILIB

error while loading shared libraries: libclntsh.so.11.1: cannot open shared object file: No such file or directory

как известно и описано много раз надо установить переменные окружения, а именно LD_LIBRARY_PATH, но вот засада - у меня все уже установлено!

ORACLE_HOME=/u02/app/oracle/product/11.2.0/client_2; export ORACLE_HOME
ORACLE_BASE=/u02/app/oracle; export ORACLE_BASE
ORACLE_TERM=xterm; export ORACLE_TERM
ORACLE_SID=obase; export ORACLE_SID

TNS_ADMIN=$ORACLE_HOME/network/admin; export TNS_ADMIN
ORACLE_DOC=$ORACLE_HOME/doc; export ORACLE_DOC
NLS_LANG=AMERICAN_AMERICA.CL8MSWIN1251; export NLS_LANG

LD_LIBRARY_PATH=/usr/local/lib:$ORACLE_HOME/bin:$ORACLE_HOME/lib; export LD_LIBRARY_PATH

и я как бы не первый раз устанавливаю(собираю) это ПО, причем оно собирается нормально (видит OCILIB).

итак, что было проверено

  1. пути проверены, Oracle client по указанному пути есть, файлы есть
  2. переменные окружения установлены
  3. при пересборке OCILIB - она явно видит Oracle Client-а через установленные переменные окружения
  4. пробовал указывать путь до Oracle HOME явно при configure
  5. проверил нет ли еще одного файла libclntsh.so или libclntsh.so.11.1
  6. симлинк libclntsh.so верно указывает на libclntsh.so.11.1
  7. пробовал разные версии OCILIB ничего не меняется - при запуске ошибка

попробовал установить переменную

LD_RUN_PATH=/usr/local/lib:/u02/app/oracle/product/11.2.0/client_2/lib;  export LD_RUN_PATH

это немного поменяло ситуацию, а именно приложение запускается и потом не может инициализировать OCI (!) те суть не меняется

проверяю

 ldd snmp2ora
        linux-vdso.so.1 =>  (0x00007ffff7981000)
        librt.so.1 => /lib64/librt.so.1 (0x00007ffbcc06a000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007ffbcbe4d000)
        libocilib.so.4 => /usr/local/lib/libocilib.so.4 (0x00007ffbcbbdb000)
        libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007ffbcb8d3000)
        libm.so.6 => /lib64/libm.so.6 (0x00007ffbcb5d0000)
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007ffbcb3ba000)
        libc.so.6 => /lib64/libc.so.6 (0x00007ffbcafec000)
        /lib64/ld-linux-x86-64.so.2 (0x00007ffbcc28c000)
        libclntsh.so.11.1 => /u02/app/oracle/product/11.2.0/client_2/lib/libclntsh.so.11.1 (0x00007ffbc8581000)
        libnnz11.so => /u02/app/oracle/product/11.2.0/client_2/lib/libnnz11.so (0x00007ffbc81b4000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007ffbc7faf000)
        libnsl.so.1 => /lib64/libnsl.so.1 (0x00007ffbc7d95000)
        libaio.so.1 => /lib64/libaio.so.1 (0x00007ffbc7b93000)

# ls /u02/app/oracle/product/11.2.0/client_2/lib/libclntsh.so.11.1
/u02/app/oracle/product/11.2.0/client_2/lib/libclntsh.so.11.1

вот реально не понимаю где тут проблема зарыта ? все же просто - всегда устанавливал LD_LIBRARY_PATH и все всегда работало без вопросов!

Ты всё написал, кроме собственно лога проблемы. Надо точнее установить, кто именно выдаёт эту ошибку. Начать можно с анализа лога (если бы он был). Закончить например strace. Чтобы знать, кому именно ты забыл путь подсунуть.

это немного поменяло ситуацию, а именно приложение запускается и потом не может инициализировать OCI (!) те суть не меняется

А это совсем непонятно. Ну, может обычным пользователям оракла это и обычная ситуация, но не думаю что тут таких много, пиши чтобы было понятно не только им. Лог, опять же, например.

firkax ★★ ()
Последнее исправление: firkax (всего исправлений: 2)
Ответ на: комментарий от firkax

стал запускать через strace и нашел причину причина - сам дурак, я стартовал ее через старый командный файл в котором, тадам, другие пути до библиотеки

Nagisa ()
Ограничение на отправку комментариев: только для зарегистрированных пользователей