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,但这似乎已经安装了,有什么问题吗?

原文由 wytten 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.7k
2 个回答

它看起来像 3264 位不匹配。 ldd 输出显示主要选择了来自 /lib64 的库。这表明您已经安装了 64 位版本的 Oracle 客户端并创建了 64 位可执行文件。但是 libaio.so 可能是 32 位库,不能用于您的应用程序。

因此,您要么需要 64 位版本的 libaio,要么创建 32 位版本的应用程序。

原文由 Codo 发布,翻译遵循 CC BY-SA 3.0 许可协议

安装软件包:

 sudo apt-get install libaio1 libaio-dev

或者

sudo yum install libaio

原文由 Praveen Kumar K R 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题