当程序运行时报错“error while loading shared libraries”,但相关库文件确实存在怎么办? miyuri Linux 2019-10-28 #### 问题描述 发现OpenCV更新了3.4.2版本,于是有更新强迫症的本狐急匆匆地`sudo make uninstall`掉了3.4.1,安装上了3.4.2。 然后悲剧了。 某OpenCV程序顺利完成编译链接,生成可执行文件,但偏偏在运行时出现问题: > error while loading shared libraries: libopencv_world.so.3.4: cannot open shared object file: No such file or directory 但进/usr/local/lib一瞅,库文件好端端地在那儿呢。 **这不应该啊!** #### 解决方案 `sudo ldconfig` #### 原理 `ldconfig`命令会自动扫描库目录(具体路径列表由`/etc/ld.so.conf`文件指定)并更新库文件、库链接列表的缓存(`/etc/ld.so.cache`)。 所以如果库文件好好地放在库目录下却没法被程序读取,十有八九就是缓存问题咯,刷新一下缓存即可。 本文由 miyuri 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。
还不快抢沙发