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下單獨跑了!