Подтвердить что ты не робот

Libaio.so.1: невозможно открыть файл общих объектов

У меня есть простая тестовая программа, которая при запуске я получаю:

./hello: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

Я связываю это следующим образом:

$(CC) $(CCFLAGS) -o hello hello.o -L../ocilib-3.9.3/src/.libs -L../instantclient_11_2 -locilib

Мой LD_LIBRARY_PATH содержит следующее:

LD_LIBRARY_PATH=../ocilib-3.9.3/src/.libs:../instantclient_11_2:/usr/lib

/usr/lib выглядит следующим образом:

Linux$ ls -l /usr/lib/libaio*
lrwxrwxrwx  1 root root   15 Nov  5  2008 /usr/lib/libaio.so.1 -> libaio.so.1.0.1
-rwxr-xr-x  1 root root 2632 Sep 16  2005 /usr/lib/libaio.so.1.0.0
-rwxr-xr-x  1 root root 2628 Sep 16  2005 /usr/lib/libaio.so.1.0.1

Выход ldd привет:

libocilib.so.3 => ../ocilib-3.9.3/src/.libs/libocilib.so.3 (0x0000002a95558000)
libc.so.6 => /lib64/tls/libc.so.6 (0x0000003811200000)
libclntsh.so.11.1 => ../instantclient_11_2/libclntsh.so.11.1 (0x0000002a956c4000)
/lib64/ld-linux-x86-64.so.2 (0x000000552aaaa000)
libnnz11.so => ../instantclient_11_2/libnnz11.so (0x0000002a97f56000)
libdl.so.2 => /lib64/libdl.so.2 (0x0000003811500000)
libm.so.6 => /lib64/tls/libm.so.6 (0x0000003811700000)
libpthread.so.0 => /lib64/tls/libpthread.so.0 (0x0000003811b00000)
libnsl.so.1 => /lib64/libnsl.so.1 (0x0000003819000000)
libaio.so.1 => not found

Я надеюсь, что мне не хватает чего-то простого здесь. Кажется, что пакет instantacient oracle требует libaio, но похоже, что он уже установлен, так что проблема?

4b9b3361

Ответ 1

Похоже на несоответствие 32/64 бит. Выход ldd показывает, что в основном выбраны библиотеки из /lib64. Это означало бы, что вы установили 64-битную версию клиента Oracle и создали 64-битный исполняемый файл. Но libaio.so, вероятно, является 32-битной библиотекой и не может использоваться для вашего приложения.

Таким образом, вам понадобится 64-разрядная версия libaio или вы создаете 32-разрядную версию вашего приложения.

Ответ 2

Введите следующее:

sudo apt-get install libaio1 libaio-dev

или

sudo yum install libaio

Ответ 3

У меня была такая же проблема, и оказалось, что я не установил библиотеку.

эта ссылка была очень полезной.

http://help.directadmin.com/item.php?id=368

Ответ 4

Здесь, в openSuse 12.3, решение также установило 32-разрядную версию libaio. Oracle, похоже, нуждается в этом сейчас, хотя на 12.1 он работает без 32-разрядной версии.

Ответ 5

У меня такая же проблема.

Я нашел

conda install pyodbc

неверно!

когда я использую

apt-get install python-pyodbc

Я решил эту проблему.

Ответ 6

Мне пришлось сделать следующее (в Kubuntu 16.04.3):

  • Установить библиотеки: sudo apt-get install libaio1 libaio-dev
  • Найдите, где установлена ​​библиотека: sudo find / -iname 'libaio.a' -type f → привело к /usr/lib/x86_64-linux-gnu/libaio.a
  • Добавить результат в переменную среды: export LD_LIBRARY_PATH="/usr/lib/oracle/12.2/client64/lib:/usr/lib/x86_64-linux-gnu"