source

libaio.so.1: 공유 개체 파일을 열 수 없습니다.

nicesource 2023. 3. 25. 11:28
반응형

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 hello 출력:

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가 필요한 것 같습니다만, 그것은 이미 설치되어 있는 것 같습니다만, 무엇이 문제입니까?

패키지를 인스톨 합니다.

sudo apt-get install libaio1 libaio-dev

또는

sudo yum install libaio

32/64비트의 미스매치인 것 같습니다.ldd 출력은 주로 라이브러리가/lib64선택되었습니다.이는 64비트 버전의 Oracle 클라이언트를 설치하고 64비트 실행 파일을 생성했음을 나타냅니다.그렇지만libaio.so는 아마도 32비트라이브러리이기 때문에 어플리케이션에서는 사용할 수 없습니다.

따라서 64비트 버전의 libaio가 필요하거나 32비트 버전의 응용 프로그램을 만들어야 합니다.

sudo 권한은 없지만 라이브러리를 설치해야 하는 경우.

다음을 사용하여 소프트웨어/라이브러리의 소스를 다운로드합니다.

apt-get source libaio

또는

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)

또는

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

앱의 LD_LIBRARY_PATH에 libaio 라이브러리를 포함합니다.

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

이제 앱에서 libaio를 찾을 수 있습니다.그래서 1

저도 같은 문제가 있었는데, 알고 보니 도서관을 설치하지 않았어요.

이 링크는 매우 유용했습니다.

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

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"

여기 openSuse 12.3에서는 32비트 버전의 libaio를 추가로 설치했습니다.12.1에서는 32비트 버전 없이 실행되지만 Oracle에서는 현재 이 기능이 필요한 것 같습니다.

저도 비슷한 문제가 있어요.

찾았다

conda install pyodbc

틀렸어!

사용할 때

apt-get install python-pyodbc

나는 이 문제를 해결했다.

sudo yum install libnsl

날 위해 일했어https://github.com/knapsu/plex-media-player-appimage/issues/13

언급URL : https://stackoverflow.com/questions/10619298/libaio-so-1-cannot-open-shared-object-file

반응형