MacOS 10.11.6下OpenCV 3.4.0 C++运行报错:libjpeg.9.dylib未加载
解决MacOS 10.11.6下CLion运行OpenCV 3.4.0时libjpeg.9.dylib找不到的问题
我之前在Mac上折腾OpenCV依赖的时候也碰到过一模一样的动态库加载错误,这种问题大多是因为第三方依赖库的路径不匹配或者系统没找到正确的库文件。针对你遇到的情况,分享几个可行的解决办法:
1. 确认libjpeg库的安装状态与路径
首先得确保你的系统里确实有这个版本的libjpeg,或者通过软链接适配版本:
- 先检查Homebrew是否安装了jpeg库:
如果输出为空,说明没装,先执行安装:brew list jpegbrew install jpeg - 进入
/usr/local/opt/jpeg/lib/目录查看文件:
如果发现只有更高版本的库(比如ls /usr/local/opt/jpeg/lib/libjpeg.10.dylib),可以手动创建软链接来模拟需要的版本:sudo ln -s /usr/local/opt/jpeg/lib/libjpeg.10.dylib /usr/local/opt/jpeg/lib/libjpeg.9.dylib
2. 在CLion中配置环境变量,引导系统找到库路径
MacOS的动态库加载器可能没把jpeg的安装路径纳入搜索范围,你可以在CLion的运行配置里添加环境变量:
- 打开CLion,点击顶部菜单栏的
Run->Edit Configurations - 在弹出的窗口中找到你的当前项目配置,切换到
Environment variables区域 - 添加一条变量:
DYLD_LIBRARY_PATH=/usr/local/opt/jpeg/lib:$DYLD_LIBRARY_PATH - 保存配置后重新运行项目
注意:如果是MacOS 10.11及以后的系统,出于安全限制,
DYLD_LIBRARY_PATH可能在某些场景下不生效,这时候可以尝试用DYLD_FALLBACK_LIBRARY_PATH替代,设置方式一样。
3. 检查并修正可执行文件的依赖路径
有时候编译后的可执行文件里记录的libjpeg路径是错的,你可以用工具检查并修改:
- 先查看你的可执行文件依赖的库路径:
找到输出中关于otool -L ./你的可执行文件名libjpeg.9.dylib的条目,确认路径是否存在 - 如果路径不正确,用
install_name_tool修改:install_name_tool -change /usr/local/opt/jpeg/lib/libjpeg.9.dylib /实际的libjpeg库路径/libjpeg.x.dylib ./你的可执行文件名
4. 极端情况:重新编译OpenCV
如果上面的方法都没用,可能是你当初编译OpenCV的时候,jpeg库还没安装或者没正确链接。这时候需要重新编译OpenCV:
- 先卸载之前的OpenCV(如果是用brew装的就
brew uninstall opencv@3.4,源码装的就去编译目录执行make uninstall) - 确保jpeg库已经安装完成
- 重新按照你之前的指南编译安装OpenCV,编译时注意确认配置日志里显示jpeg库被正确检测到
内容的提问来源于stack exchange,提问作者budekatude
相关产品推荐
相关产品推荐

