VS2013配置編譯Caffe-Win10_X64

 原文連接:http://blog.csdn.net/joshua_1988/article/details/45036993
html

        有少許修改................
linux

        2014年4月的時候本身在公司就將Caffe移植到Windows系統了,今年本身換了臺電腦,想在家裏也隨便跑跑,原本也裝了Ubuntu能夠很方便的配置好,無奈在家的風格是「娛樂的時候抽空學習」,因此移植到Windows仍是頗有必要的。可是,公司禁止將公司內部資料帶出,不少地方又都忘記了,週末磨了一天終於移植完,本篇爲記錄將Caffe移植至Windows7 x64系統下的一些關鍵步驟。第一步先看看這老些依賴庫怎麼搞。git

在真正開始編譯各依賴庫以前,須要準備一些必備工具:github

        首先固然是VS2013,下載地址:https://www.visualstudio.com/數據庫

        其次是 CMake工具,下載地址:http://www.cmake.org/download/   
bootstrap

        (CMake要使用最新版本,不然沒法識別 Dev12......windows


1.Boostapp

下載地址:http://www.boost.org/工具

編譯方法:visual-studio

1) 運行Visual Studio Tools中的VS2013 x64 Cross Tools Command Prompt終端工具

2) 從終端進入boost庫所在目錄,如D:\LIBS\boost_1_57_0

3) 運行bootstrap.bat生產64位的bjam.exe

4) 輸入命令進行編譯,更正一下,msvc-12.0纔是vs2013哈,感謝halooooJeffrey http://weibo.com/2211847364

靜態庫:bjam --build-type=complete toolset=msvc-9.0 toolset=msvc-12.0 threading=multi link=static address-model=64

共享庫:bjam --build-type=complete toolset=msvc-9.0 toolset=msvc-12.0 threading=multi link=shared address-model=64

使用Bjam編譯仍是比較蛋疼的,直接在GIt上下載EXE安裝版本就行了......


2.OpenCV

下載地址:http://opencv.org/downloads.html  本文中使用的是2.4.10版本

編譯方法:

下載後的安裝包中有已編譯好的庫,可直接引用,如D:\LIBS\opencv\build\x64\vc12

若是不是使用Linux,仍是直接安裝就好,不要本身編譯,很麻煩.....


3.OpenBlas

下載地址:http://sourceforge.net/projects/openblas/files/

編譯方法:

OpenBlas庫在windows上編譯起來比較複雜,這裏給出的下載地址是一個已編譯好的壓縮包OpenBLAS-v0.2.14-Win32.zip (12.1 MB),直接提供了./bin ./include ./lib路徑...(贊 原做者...)


4.CUDA

下載地址:https://developer.nvidia.com/cuda-downloads

編譯方法:

OpenCV相似,安裝好後直接有已編譯好的庫。如C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.0\includeC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.0\lib\x64 

以上是依賴庫比較經常使用,最好將該它們的includelib加入到Windows的環境變量中,方便後續的庫的編譯


5.GFlags

下載地址:https://github.com/gflags/gflags

編譯方法:

1) 啓動CMake(cmake-gui)工具

2) 設置source code路徑和build路徑


3) 單擊Configure按鈕,並選擇並選擇Visual Studio 12 2013 Win64編譯器編譯器


4) 更新完成後,勾選中BUILD_SHARED_LIBSBUILD_STATIC_LIBS


5) 單擊Generate按鈕,生成VS工程 


6) 打開剛剛生成的VS工程,build其中的ALL_BUILD工程,注意選擇x64模式,並分別生成DebugRelease下的庫 


7) 編譯成功後,在工程路徑下會生成binincludelib三個文件夾 


6.GLog

下載地址:https://github.com/google/glog

編譯方法:

該工程中包含VS工程google-glog.sln,打開直接編譯便可,一樣注意Solution Platform選擇x64模式,並分別生成DebugRelease下的庫


7.LevelDB

下載地址:https://github.com/bureau14/leveldb 

這裏沒有選擇官方的https://github.com/google/leveldb是因爲官方版本移除了CMake的依賴項,本身寫起來比較複雜

編譯方法:

與編譯GFlags方法相似,惟一須要注意的地方是將CMakeLists.txt中第82行的-DSNAPPY註釋掉,不然須要依賴Snappy庫,其實並不絕對須要,爲了簡單起見將此庫去掉。另外Leveldb   依賴於 boost  庫,若是沒有將boost庫添加至環境變量,可能須要手動進行設置。


8.LMDB

下載地址:https://gitorious.org/mdb/mdb/archive/462dc097451834477b597447af69c5acc93182b7.tar.gz

編譯方法:

1) 解壓壓縮包到某路徑,例如D:\CODE\CXX\mdb-mdb

2) VS2013中新建工程,FILE --> New --> Project From Existing Code.. 


3) 選取源碼所在路徑,並給工程起名 


4) 單擊next按鈕後選擇Project typeConsole application project 


5) Solution Platform修改成x64模式

6) 注意將工程的輸出改成靜態庫,右鍵單擊工程 --> property --> Configuration Properties --> General --> Project Default --> Configureation Type --> Static library (.lib)

7) 其中一個.c文件中包含了unistd.h,爲了解決這個問題須要準備三個文件 unistd.hgetopt.hgetopt.cunistd.h能夠http://stackoverflow.com/questions/341817/is-there-a-replacement-for-unistd-h-for-windows-visual-c解決。另外兩個能夠從http://ieng6.ucsd.edu/~cs12x/vc08install/getopt9.zip下載

8) 最後編譯便可(如果 添加unistd.h 以後 仍然顯示沒法找到unistd.h,重啓一下電腦就能夠找到了!!!  仍是不行????

在linux下編譯的程序必須包含  unistd.h文件,可是VC裏面是沒有的,因此必須寫一個到 VC的包含目錄...

因此必須把這個頭文件加入到VS2012的頭文件庫裏面,其它的編譯器也是如此,對於VS2012來講只要在你的默認庫文件夾下(個人電腦是C:\Program Files(X86)\Microsoft Visual Studio 12.0\VC\include)添加一個unistd.h文件便可。而後再把那兩個Getopt文件也添加進去...    成功!)


9.ProtoBuf

下載地址:https://github.com/google/protobuf

編譯方法:

壓縮包裏有一個叫vsprojects的文件夾,其中有現成的VS工程,能夠用來直接編譯,也須要注意將Solution Platform修改成x64模式

( 對於: error C1041: 沒法打開程序數據庫vc120.pdb 解決方法如連接所示:在麼一個工程 出現Visual Studio 2013 fatal error C1041 /FS 解決方案是爲單個項目添加 /FS (Force Synchronous PDB Writes) 編譯選項,

如果多個,參考:http://www.hankcs.com/acg/game/to-solve-the-cocos2d-x-3-2-error-c1041-cannot-open-the-program-database-vc120-pdb.html

在C:\Tools\protobuf-master\src\google\protobuf\compiler\mock_code_generator.cc  出現  #include <gtest/gtest.h> 找不到的現象!爲何?

(參考:http://stackoverflow.com/questions/10945386/cannot-open-include-file-gtest-h-no-such-file-or-directory

   必須 編譯安裝gtest,完成測試功能...)


10.HDF5

下載地址:http://www.hdfgroup.org/ftp/HDF5/current/src/CMake/hdf518-CMakeWindows.zip

編譯方法:

解壓後,在VS2013 x64 Cross Tools Command Prompt終端工具中運行build-VS2013-64.bat便可。

(CMake Error at HDF518CMake.cmake:6 (cmake_minimum_required):
  CMake 3.1.0 or higher is required.  You are running version 3.0.2 ,看來Cmake又得更新了...

 編譯結果出現failed!不知道運行起來怎麼樣???43% Test Failed,1129 of 1975 failed!

若是直接安裝可使用的話,就不要本身編譯HDF5了。

 

整理頭文件和庫文件

        5-10的頭文件和編譯後的庫統一整理到一個3rdparty文件夾下,其中包含兩個文件夾includelib


        include文件夾下包含gflags、glog、google、hdf五、leveldb、lmdb六個文件。gflags的頭文件來自於生成的VS工程目錄中的include文件夾;glog的頭文件來自於VS工程目錄中的src\windows文件夾;google中是protobuf的頭文件,來自於壓縮包中的src\google文件夾;hdf5來自於壓縮包中的CMake\hdf5-1.8.14\src文件夾,保留.h文件便可;leveldb的頭文件來自於壓縮包的include文件夾;lmdb的頭文件來自於壓縮包中的libraries\liblmdb文件夾,保留.h文件便可

       lib文件夾中的.lib文件直接從編譯好的工程目錄下拷貝便可,注意debug模式下的.lib文件的文件名修改成xxxd.lib形式

       至此,caffe須要的各項依賴庫已經準備完畢,後續會上一些圖,看起來直觀一些。


11.開始編譯Caffe..................

      使用Cmake編譯Caffe............

      配置Cmake時使用glog包含,包含src/Windows文件夾,若使用src裏面修改後綴的/glog/logging.h,則出現@字符串錯誤,一時難解。

      配置Cmake的包含目錄後,在使用VS編譯時仍會發現找不到 「google/protobuf/stubs/common.h」文件,挺蛋疼..................

      使用VS編譯時,發現caffe.pd.h始終會被修改成 <google/protobuf/stubs/common.h>,即便設定爲只讀,只要一編譯,就會自動修改成原文件,真是醉了!醉了......

      因此,編譯失敗了...........


      出現@字符串錯誤:把包含的 windows/glog 替換 glog裏面的文件;

  編譯成功.............................

相關文章
相關標籤/搜索