明明安装了库,也在CMake里指定了路径,但还是报这个错误
- 修改
/etc/ld.so.conf
然后刷新
Linux回到这个文件定义的路径里寻找库文件1
2
3sudo vim /etc/ld.so.conf
# 添加你的库文件路径
sudo ldconfig
- 修改环境变量
LD_LIBRARY_PATH
1 | export LD_LIBRARY_PATH=/where/you/install/lib:$LD_LIBRARY_PATH |
- 用ln将需要的so文件链接到/usr/lib或者/lib这两个默认的目录下边
1 | ln -s /where/you/install/lib/*.so /usr/lib |
- 强行将路径写进去
- 路径写进去不行的话,在
~/.bashrc中
,导入export环境变量LD_LIBRARY_PATH
- 在
/etc/ld.so.conf/
目录下,添加该文件的路径,首先命令行输入locate package,定位软件包的位置,然后找个.conf文件,将路径加进去之后,重新sudo ldconfig
运行时动态库的搜索路径的先后顺序是
- 编译目标代码时指定的动态库搜索路径
- 环境变量
LD_LIBRARY_PATH
指定的动态库搜索路径 - 配置文件
/etc/ld.so.conf
中指定的动态库搜索路径 - 默认的动态库搜索路径
/lib
和/usr/lib
这个顺序是compile gcc时写在程序内的,通常软件源代码自带的动态库不会太多,而我们的/lib
和/usr/lib
只有root权限才可以修改,如果对环境变量LD_LIBRARY_PATH
进行操作就能解决问题,不要改/etc/ld.so.conf
,/lib
和/usr/lib