我本子上原本用 Homebrew 安装了 OpenCV ,后来为了执行某个古老的项目,转而去官网下载 OpenCV 手动编译安装到系统中。然后终端就崩溃了,提示错误为:

dyld: could not load inserted library '/usr/local/Cellar/opencv/2.4.11/lib/libopencv_calib3d.dylib' because image not found

这段代码错误来自 dyld ,原因是 DYLD_INSERT_LIBRARIES 环境变量设置错误。当时我修改了 .bash_profile ,在里面自定义了 DYLD_INSERT_LIBRARIES 变量,现在 OpenCV 已经不再安装在 /usr/local/Cellar/opencv 当中了,而是直接安装在 /usr/local 中,所以 DYLD_INSERT_LIBRARIES 相应修改。修改完成之后用下面命令激活文件:

source ~/.bash_profile

此时发现问题已经解决了,过了段时间,我重新打开终端,发现旧问题重新袭来,重启也不能解决问题。于是乎我以为我还在其他地方修改了系统环境变量,我查了 OS X 可能运行的系统环境变量文件,都没有找到。后来猜想是 Matlab 链接错误,我甚至重新修改了 Matlab 的 OpenCV,依然没有解决问题。然后这个问题就让我闲置了,今天使用终端,又遇到这个问题,导致每次使用都得重新激活一下 .bash_profile 。刚才灵光一闪,在终端输入:

echo $SHELL

显示我使用的是 zsh ,然后一切就真相大白了。我打开 ~/.bashrc ,发现这家伙把我的 ~/.bash_profile 拷贝了一遍,然而当我修改系统环境变量的时候他却没有随之修改。手动更新了一下这个文件,文章开头的错误就彻底解决了。

转载保留版权:http://haipz.com/blog/i/6526 - 海胖博客