MacOS 10.12 升级日记
2017.4.23 当时的环境时 macos 10.11 + xcode7+cuda7.5
iPhone6已经升级到最高版本iOS10.3 所以想写iOS的东西目前的Xcode已经过时了,要升级到Xcode8,但是Xcode8需要 macOS10.12。然后我接下来就不断的更新。
先升级macOS到10.12 ,然后直接在App Store下载了最新的Xcode8.3.2。估计要重新下载安装最新版本cuda8.0.61 。
安装好cuda后,发现基于cuda 的opencv 也要重新编译安装。下载opencv 编译安装with_CUDA 需要CLT7.3, cuda8的NVCC不支持CLT8.3.2好崩溃啊! 那好 我就重新编译吧!
编译opencv会出现系统库的错误,估计CLT7.3已经不能适应最新macOS10.12了,只能用CLT8了。怎么办,难道cuda8.0.61不能在Mac上用了吗?我觉得不可能啊。查看一下cuda文档说明,看到,目前cuda已经支持到Xcode8.2了,所以只要xcode降级到8.2就可以了。 重新下载8.2安装,重新编译opencvwith_cuda。OK ! xcode8.2不能编译最新的iOS10.3,所以要保留两个Xcode了!
编译安装OPENCV一点说明:
with_qt with_ipp with_cuda with_avfoundation without_qtkit without_quicktime without_ffmpeg without_v4l without_vtk without_gstreamer
qt5是通过brew 安装并且是keg-only外部无法直接找到他,需要手动添加路径,在cmake里设置 CMAKE_PREFIX_PATH=<brew qt path (/usr/local/opt/qt)>,如果出现C++11错误提示,要设置cmake CXX compiler flag 添加 -std=c++11字段。
更新一下CUDNN, 下载后 直接将 include 和lib里的文件拷到 /usr/local/下
更新torch
torch7 先./clean.sh一下 删除之前编译的文件 然后更新库 ./update.sh 直接重新编译安装 很方便 。 记得确认./update.sh里面要先指定TORCH_LUA_VERSION=LUA52 ./install.sh 否则安装的是luajit,导致内存不足的问题! 卸载torch很简单,就把整个文件夹删掉就好了 rm -rf ~/torch7
安装 caffe2
需要protobuf, 但是一开始用brew安装的不支持,就从GitHub上下载3.0.0版本源码 编译安装
protobuf安装过程 比较简单,进入protobuf的工程文件夹, ./autogen.sh -> ./configure -> make -> make install
会在/usr/local/bin/protoc 生成protobuf compiler , 查看版本 protoc --version
然后 可以安装 NNPACK & pthreadpool,也可以不安装
cmake USE里 设置 取消勾选一些无法使用的库
然后 generate -> make ->sudo make install
========================血泪分割线================================
说说10.12系统里的python的故事
一开始系统自带了一个python2.7.10的小朋友,这个小朋友挺好系统自带的,但是后来莫名其妙我通过brew安装了一个python2.7.13,还带个小伙伴pip。 这个pip在/usr/local/lib/python/2.7/site-packages 建立了个小仓库专门给python2.7.13用。
后来发现这个混乱啊 两个python 小朋友总是打架。 头疼!!!!
准备删掉brew的。留下系统自带的! 但是没有小伙伴pip,python2.7.10不好管理他的小物品。只好给他装一个小伙伴。python get-pip.py ,如果之前前装过会在/Library/Python/2.7/site-packages 留下痕迹,需要手动删掉 再按装。
进入python , from caffe2.python import core 测试看看安装是否成功
一看会出现两个.so 文件 动态链接库的问题。dlopen() 找不到 @rpath/CUDA.framework
明明有/Library/Frameworks/CUDA.framework 这个库
那好我就用 install_name_tool -change @rpath/CUDA.framework.. /Library/Frameworks/CUDA.framework .../.../XXX.so
改称链接绝对路径
成功!
==================================================================
-----------------------------------------------------苦难的分割线-------------------------------------------------------------
为了研究代码怎么能少了jupyter notebook。 废话少说 pip install jupyter 咣! error 什么 code 1错误 查了下 code错误代码 没权限。
什么鬼?升级一下 setuptools ,咣!又是错误没权限? 开 root少废话 sudo su - root ! 日 ,还是没权限,一查要关SIP,坑嗲的苹果! 关吧! 进入安全模式 开机+ CMD+R
进入终端 输入 cdrutil disable 。 重启电脑 (没有权限的文件可以通过 终端 chflags nouchg /XX 来关闭🔒 查看权限 ls -lOe)
开机关了SIP! 有权限了,升级下pip install --upgrade setuptools ,日 什么certifi不对! pip install certifi 还不对! 怎么回事?
easy_install -U setuptools 用easy_install试试 成功了, pip install ez_setup 成功! pip install jupyter 成功!
---------------------------------------------------------------------------------------------------------------------------------------
发现jupyter-notebook 跑caffe2会有问题,但是终端开python单独跑不会,崩溃报告显示,caffe2链接的leveldb库会调用gperltools的libtcmalloc.dylib时崩掉。不知道具体什么原因。很奇怪只有当在notebook下跑时会崩,caffe2只能在python下单独跑了!