libaio.so.1: cannot open shared object file

linux, oracle, oracle-call-interface

Solution

It looks like a 32/64 bit mismatch. The ldd output shows that mainly libraries from `/lib64` are chosen. That would indicate that you have installed a 64 bit version of the Oracle client and have created a 64 bit executable. But `libaio.so` is probably a 32 bit library and cannot be used for your application.

So you either need a 64 bit version of libaio or you create a 32 bit version of your application.

Problem

I have a simple test program that when I run I get: ``` ./hello: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory ``` I link it like this: ``` $(CC) $(CCFLAGS) -o hello hello.o -L../ocilib-3.9.3/src/.libs -L../instantclient_11_2 -locilib ``` My LD_LIBRARY_PATH contains this: ``` LD_LIBRARY_PATH=../ocilib-3.9.3/src/.libs:../instantclient_11_2:/usr/lib ``` /usr/lib looks like this: ``` 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 ``` Output of 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 ``` I'm hoping that I'm missing something simple here. The oracle instantclient package appears to require libaio, but that seems to be installed already so what's the problem?

Original source