MacOS 10.12 升級日記

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

相關文章
相關標籤/搜索