我有一个简单的测试程序,当我跑步时,我得到:
./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,但似乎已经安装了,那么问题是什么?
答案 0 :(得分:79)
输入以下内容:
sudo apt-get install libaio1 libaio-dev
或
sudo yum install libaio
答案 1 :(得分:37)
看起来像32/64位不匹配。 ldd 输出显示主要选择来自/lib64
的库。这表明您已经安装了64位版本的Oracle客户端并创建了64位可执行文件。但libaio.so
可能是32位库,不能用于您的应用程序。
因此,您需要64位版本的libaio,或者创建32位版本的应用程序。
答案 2 :(得分:2)
答案 3 :(得分:1)
我必须做以下事情(在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"
答案 4 :(得分:0)
在openSuse 12.3上,解决方案是另外安装32位版本的libaio。 Oracle现在似乎需要这个,尽管在12.1上它没有32位版本。
答案 5 :(得分:0)
我遇到了类似的问题。
我找到了
conda install pyodbc
错了!
当我使用
时apt-get install python-pyodbc
我解决了这个问题。
答案 6 :(得分:0)
如果没有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
将libaio库包含在您的应用程序的LD_LIBRARY_PATH中:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/your/lib/libaio/lib
现在,您的应用应该可以找到libaio.so.1