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, но похоже, что он уже установлен, так что проблема?
Ответы
Ответ 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"