C++动态链接库运行时找不到怎么办
C++在编译时,可以指定动态库的路径,但是运行的时候,
或者从一台机器拷到另一台的时候,它需要从系统的配置目录中寻找对应的动态库,
有可能系统的默认的目录只是/usr/lib64/,但是你的放在/usr/local/lib中,
比如有个libease.so放在了/usr/local/lib中,用ldd查看
ldd a.out linux-vdso.so.1 => (0x00007fffebdff000) libease.so => not found libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f99640ae000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f9963e2b000) libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f9963c15000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f996388b000) /lib64/ld-linux-x86-64.so.2 (0x00007f99643cb000)
这时候需要在/etc/ld.so.conf.d/中配置,
vim /etc/ld.so.conf.d/libease.conf 写入
/usr/local/lib
使用命令ldconfig使之生效就可以看到:
libease.so => /usr/local/lib/libease.so (0x00007fb7695e8000)
也可以把/usr/local/lib/加入系统默认寻找路径
编辑/etc/ld.so.conf
include /etc/ld.so.conf.d/*.conf include /usr/local/lib include .
也要ldconfig一下。。
还有一个办法就是设置LD_LIBRARY_PATH环境变量。
export LD_LIBRARY_PATH=/path/to/lib
可以暂时可用