2017.4.23 当时的环境时 macos 10.11 + xcode7+cuda7.5 python
iPhone6已经升级到最高版本iOS10.3 因此想写iOS的东西目前的Xcode已通过时了,要升级到Xcode8,可是Xcode8须要 macOS10.12。而后我接下来就不断的更新。c++
先升级macOS到10.12 ,而后直接在App Store下载了最新的Xcode8.3.2。估计要从新下载安装最新版本cuda8.0.61 。macos
安装好cuda后,发现基于cuda 的opencv 也要从新编译安装。下载opencv 编译安装with_CUDA 须要CLT7.3, cuda8的NVCC不支持CLT8.3.2好崩溃啊! 那好 我就从新编译吧! xcode
编译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一点说明:python2.7
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字段。ui
更新一下CUDNN, 下载后 直接将 include 和lib里的文件拷到 /usr/local/下lua
更新torchspa
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下单独跑了!