От новичка до гуру: Курсы программирования на CyberDuff

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

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


  • Опубликуйте вывод $ ldd hello. 16.05.2012
  • Похоже, вам нужна 64-битная версия библиотеки, которой у вас нет. 16.05.2012

Ответы:


1

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

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

16.05.2012
  • В моей 64-битной системе Ubuntu 12.04 у меня была установлена ​​32-битная версия этой библиотеки. Вероятно, у меня это было, потому что это была зависимость от какого-то другого 32-битного программного обеспечения. Простой запуск apt-get install libaio1 также подтянет 64-битную версию. 13.12.2012
  • @amarillion - я могу подтвердить, что apt-get install libaio1 устранил проблему в 64-битной Ubuntu 12.04. Спасибо. 24.10.2013
  • Я могу подтвердить, что apt install libaio1 решает эту проблему на Ubuntu 18.04. 17.05.2021

  • 2

    Установите пакеты:

    sudo apt-get install libaio1 libaio-dev
    

    or

    sudo yum install libaio
    
    20.05.2014
  • Также можно выполнить sudo apt search libaio для поиска элементов ‹== Обратите внимание, что apt не apt-get 19.03.2015

  • 3

    В случае, если у вас нет привилегии sudo, но все же необходимо установить библиотеку.

    Загрузите исходный код программного обеспечения/библиотеки, используя:

    apt-get source libaio
    

    or

    wget https://src.fedoraproject.org/lookaside/pkgs/libaio/libaio-0.3.110.tar.gz/2a35602e43778383e2f4907a4ca39ab8/libaio-0.3.110.tar.gz
    

    распаковать библиотеку

    Установите следующую команду в пользовательскую библиотеку:

    make prefix=`pwd`/usr install #(Copy from INSTALL file of libaio-0.3.110)
    

    or

    make prefix=/path/to/your/lib/libaio install
    

    Включите библиотеку libaio в LD_LIBRARY_PATH для вашего приложения:

    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/your/lib/libaio/lib
    

    Теперь ваше приложение должно найти libaio.so.1.

    30.12.2018

    4

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

    эта ссылка была супер полезной.

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

    08.05.2014

    5

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

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

    6

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

    09.08.2013

    7

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

    я нашел

    conda установить pyodbc

    неправильно!

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

    apt-get установить python-pyodbc

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

    08.12.2015
    Новые материалы

    Отслеживание состояния с течением времени с дифференцированием снимков
    Время от времени что-то происходит и революционизирует часть моего рабочего процесса разработки. Что-то более забавное вместо типичного утомительного и утомительного процесса разработки. В..

    Я предполагаю, что вы имеете в виду методы обработки категориальных данных.
    Я предполагаю, что вы имеете в виду методы обработки категориальных данных. Пожалуйста, проверьте мой пост Инструментарий специалиста по данным для кодирования категориальных переменных в..

    Игра в прятки с данными
    Игра в прятки с данными Я хотел бы, чтобы вы сделали мне одолжение и ответили на следующие вопросы. Гуглить можно в любое время, здесь никто не забивается. Сколько регионов в Гане? А как..

    «Раскрытие математических рассуждений с помощью Microsoft MathPrompter и моделей больших языков»
    TL;DR: MathPrompter от Microsoft показывает, как использовать математические рассуждения с большими языковыми моделями; 4-этапный процесс для улучшения доверия и рассуждений в математических..

    Раскройте свой потенциал в области разработки мобильных приложений: Абсолютная бесплатная серия
    Глава 6: Работа в сети и выборка данных Глава 1: Введение в React Native Глава 2: Основы React Native Глава 3: Создание пользовательского интерфейса с помощью React Native Глава 4:..

    Все о кейсах: Camel, Snake, Kebab & Pascal
    В программировании вы сталкивались с ними при именовании переменной, класса или функции. Поддержание согласованности типов и стилей случаев делает ваш код более читабельным и облегчает совместную..

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