Linux找不到动态库(error while loading shared libraries)的解决方法

Linux执行可执行程序,出现如下出错信息:
 ./Test.out: error while loading shared libraries: liboscarodbc.so: cannot open shared object file: No such file or directory

解决方法如下:

1)执行命令:ldd+可执行程序名称,查看其依赖的动态库路径

例如执行: ldd Test.out 

输出如下:
    linux-vdso.so.1 (0x00007fffff950000)
    liboscarodbc.so => not found
    libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007ffff593c000)
    libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007ffff58dc000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00007ffff58a8000)
    libc.so.6 => /lib64/libc.so.6 (0x00007ffff56e4000)
    /lib64/ld.so.1 (0x00007ffff5b10000)
    libm.so.6 => /lib64/libm.so.6 (0x00007ffff5600000)

根据如上输出,我们知道是liboscarodbc.so这个库找不到。

2)将liboscarodbc.so拷贝到我们实际情况所需的路径,例如:/usr/lib
3)执行命令:vim /etc/ld.so.conf(编辑文件,在文件中添加一行:  /usr/lib),文件内容参考如下:

include ld.so.conf.d/*.conf
/usr/lib
4)执行命令:ldconfig (使上述路径生效)

5)再次执行:ldd+可执行程序名称

例如执行: ldd Test.out 

输出如下:
    linux-vdso.so.1 (0x00007fffff950000)
    liboscarodbc.so => /usr/lib/liboscarodbc.so (0x00007fffff435000)
    libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007ffff593c000)
    libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007ffff58dc000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00007ffff58a8000)
    libc.so.6 => /lib64/libc.so.6 (0x00007ffff56e4000)
    /lib64/ld.so.1 (0x00007ffff5b10000)
    libm.so.6 => /lib64/libm.so.6 (0x00007ffff5600000)

综上,问题解决

你可能感兴趣的:(linux,c++,数据库开发)