Linux系统不像Windows,可以把动态库放在可执行程序同级目录下,自动会查找到。Linux可执行程序依赖的动态库在/usr/lib等几个默认文件夹下查找,如果找不到就会报错;设置Linux的LD_LIBRARY_PATH变量可以解决这个问题。
Linux下的库查找顺序可参考博客
编译完成动态库之后,一般会make install安装到系统lib路径下,执行可执行程序时,会自动到系统lib路径下查找依赖的.so文件,找不到就会报错提示程序名: error while loading shared libraries: 某动态库.so: cannot open shared object file: No such file or directory 。
在系统根目录下,有.bash_rc文本文件,每次打开终端时会加载这一文件中的环境变量。
使用vim或gedit打开它,在里面加入内容:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:你的动态库路径
如下图所示,/usr/local/lib/ceres_solver/bin是我的动态库的放置位置:

修改完成后,保存退出,重新打开终端,运行可执行程序,即可找到该路径下的动态库。