操作系统:ubuntu,其余linux类似。
我们在写程序时候可能会使用自己写的动态库,或者调用别人写的动态库,直接调用呢可能会出现如下错误:
error while loading shared libraries: libPrintLog.so.1: cannot open shared object file: No such file or directory
出现这个错误,先翻译一下,原来是找不到.so动态库,但是明明在QT中添加了这个动态库了呀。原因是我们在执行编译好的程序之前,需要设置一下LD_LIBRARY_PATH 这个环境变量,我们需要将你的so库路径添加到这个环境变量中,那么添加的方法有几种呢?
1:设置临时环境变量(新终端执行可执行文件会失效)。
打开一个终端窗口 输入 export LD_LIBRARY_PATH=/home/aaa/lib,回车,再执行你的程序就ok了,就不会出现上述问题了。
2:设置永久环境变量
打开这个文件,~/.bashrc ,在该文件的结尾,添加如下语句来使设置生效:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/aaa/lib
保存该文件,打开新终端执行你的可执行文件,即可。
上述两种方法,用哪种,看你具体的需求了,其中,aaa是用当前用户名,lib是你存放so动态库的文件夹名,/home/aaa/lib就是so动态库所在路径了。