2012-05-16 67 views
27

我有一個簡單的測試程序,當我跑我得到: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,但似乎已經安裝好了,那麼問題是什麼?

+1

後的輸出'$ ldd hello'。 – trojanfoe

+0

它看起來像你需要一個你沒有的庫的64位版本。 –

回答

33

它看起來像一個32/64位不匹配。輸出顯示主要選自/lib64的文庫。這將表明您已經安裝了64位版本的Oracle客戶端並創建了64位可執行文件。但是libaio.so可能是32位庫,不能用於您的應用程序。

因此,您需要64位版本的libaio或創建應用程序的32位版本。

+32

在我的64位Ubuntu 12.04系統上,我安裝了該庫的32位版本。可能我有它,因爲它是一些其他32位軟件的依賴。簡單地運行「apt-get install libaio1」也會引入64位版本。 – amarillion

+5

@amarillion - 我可以確認「apt-get install libaio1」修復了64位Ubuntu 12.04上的問題。謝謝。 – SteveT

0

在openSuse 12.3上,此解決方案還安裝了32位版本的libaio。甲骨文現在似乎需要這樣做,儘管在12.1版本中它運行時沒有32位版本。

55

鍵入以下內容:

sudo apt-get install libaio1 libaio-dev 

sudo yum install libaio 
+4

這一個解決了我的問題! – confiq

+0

也可以執行「sudo apt search libaio」來搜索項目<==注意「apt」不是「apt-get」 –

0

我有一個類似的問題。

我發現

暢達安裝pyodbc

是錯誤的!

當我使用

apt-get的安裝python-pyodbc

我解決了這個問題。

0

我不得不做以下(在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"
相關問題