VS2013配置编译Caffe-Win10_X64
?原文鏈接:http://blog.csdn.net/joshua_1988/article/details/45036993
????????有少量修改................
??????? 2014年4月的時候自己在公司就將Caffe移植到Windows系統了,今年自己換了臺電腦,想在家里也隨便跑跑,本來也裝了Ubuntu可以很方便的配置好,無奈在家的風格是“娛樂的時候抽空學習”,所以移植到Windows還是很有必要的。但是,公司禁止將公司內部資料帶出,很多地方又都忘記了,周末磨了一天終于移植完,本篇為記錄將Caffe移植至Windows7 x64系統下的一些關鍵步驟。第一步先看看這老些依賴庫怎么搞。
在真正開始編譯各依賴庫之前,需要準備一些必備工具:
? ? ? ? 首先當然是VS2013,下載地址:https://www.visualstudio.com/
? ? ? ? 其次是 CMake工具,下載地址:http://www.cmake.org/download/???
??????? (CMake要使用最新版本,否則無法識別?Dev12......)
1.Boost
下載地址:http://www.boost.org/
編譯方法:
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\include和C:\Program?Files\NVIDIA?GPU?Computing?Toolkit\CUDA\v7.0\lib\x64?
以上是依賴庫比較常用,最好將該它們的include和lib加入到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_LIBS和BUILD_STATIC_LIBS
5)?單擊Generate按鈕,生成VS工程?
6)?打開剛剛生成的VS工程,build其中的ALL_BUILD工程,注意選擇x64模式,并分別生成Debug和Release下的庫?
7)?編譯成功后,在工程路徑下會生成bin、include、lib三個文件夾?
6.GLog
下載地址:https://github.com/google/glog
編譯方法:
該工程中包含VS工程google-glog.sln,打開直接編譯即可,同樣注意Solution?Platform選擇x64模式,并分別生成Debug和Release下的庫
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?type為Console?application?project?
5)?將Solution?Platform修改為x64模式
6)?注意將工程的輸出改為靜態庫,右鍵單擊工程?-->?property?-->?Configuration?Properties?-->?General?-->?Project?Default?-->?Configureation?Type?-->?Static?library?(.lib)
7)?其中一個.c文件中包含了unistd.h,為了解決這個問題需要準備三個文件?unistd.h、getopt.h、getopt.c。unistd.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文件夾下,其中包含兩個文件夾include和lib
? ? ? ? include文件夾下包含gflags、glog、google、hdf5、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里面的文件;
??? ??編譯成功.............................
?????
總結
以上是生活随笔為你收集整理的VS2013配置编译Caffe-Win10_X64的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 这个路由能让手机有线上网-手机有线连接路
- 下一篇: 动物-昆虫:蚂蚱