1. 程式人生 > >Ubuntu14.04通過make或cmake編譯安裝caffe

Ubuntu14.04通過make或cmake編譯安裝caffe

1.安裝相關的依賴

按照官網的流程進行安裝,過程如下:

安裝通用的依賴:

sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install --no-install-recommends libboost-all-dev

注意其中安裝了libopencv-dev,我比較關心opencv的版本,所以在安裝之前檢視這個包的資訊為2.4.8,感覺可以就安裝了。

sudo apt-cache
show libopencv-dev
Package: libopencv-dev
Priority: optional
Section: universe/libdevel
Installed-Size: 704
Maintainer: Kubuntu Developers <[email protected]>
Original-Maintainer: Debian Science Team <[email protected]>
Architecture: amd64
Source: opencv
Version: 2.4.8+dfsg1-2ubuntu1
......
Description-en: development files for
opencv This is a metapackage providing development package necessary for development of OpenCV (Open Computer Vision). . The Open Computer Vision Library is a collection of algorithms and sample code for various computer vision problems. The library is compatible with IPL (Intel's Image Processing Library
) and, if available, can use IPP (Intel's Integrated Performance Primitives) for better performance. . OpenCV provides low level portable data types and operators, and a set of high level functionalities for video acquisition, image processing and analysis, structural analysis, motion analysis and object tracking, object recognition, camera calibration and 3D reconstruction. Description-md5: f9dc67381f1013c39fe59842c79cbddf Homepage: http://opencv.org/ Bugs: https://bugs.launchpad.net/ubuntu/+filebug Origin: Ubuntu Supported: 9m

安裝cuda

參見我的另一篇部落格 Ubuntu安裝記錄:軟體安裝 中的安裝方法,很簡單。去CUDA GPUs 確定你的顯示卡是英偉達獨立顯示卡並且支援cuda,否則就只用CPU吧。

安裝BLAS

BLAS,英文全稱Basic Linear Algebra Subprograms,即基礎線性代數子程式庫,裡面擁有大量已經編寫好的關於線性代數運算的程式。caffe官網提供了關於blas庫的三種選擇,ATLAS,MKL,OpenBLAS。詳情參見部落格 Ubuntu14.04 BLAS安裝 。這裡,為了簡單,安裝ATLAS。

sudo apt-get install libatlas-base-dev

安裝Python

sudo apt-get install python-dev

安裝14.04所額外需要的依賴

sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev

2.make編譯

首先下載caffe-master並解壓。編譯教程參見官網。如下:

cd到caffe根目錄,修改配置檔案

cd Desktop/caffe-master/
cp Makefile.config.example Makefile.config

這裡我們一直採用apt-get安裝,並且預設使用GPU加速,所以不用怎麼修改Makefile.config,只需要將WITH_PYTHON_LAYER := 1前的註釋去掉,方便使用Python呼叫即可。使用命令列開始編譯:

make all -j4

這一步時間較長,-j4表示採用多核方式,我的機器是X4的,所以用的4這個引數。完成後結果如下:

CXX/LD -o .build_release/tools/compute_image_mean.bin
CXX/LD -o .build_release/tools/convert_imageset.bin
CXX/LD -o .build_release/examples/cpp_classification/classification.bin
CXX/LD -o .build_release/examples/siamese/convert_mnist_siamese_data.bin
CXX/LD -o .build_release/examples/mnist/convert_mnist_data.bin
CXX/LD -o .build_release/examples/cifar10/convert_cifar_data.bin

接著輸入命令:

make test -j4

結果如下:

LD .build_release/src/caffe/test/test_split_layer.o
LD .build_release/src/caffe/test/test_image_data_layer.o
LD .build_release/src/caffe/test/test_softmax_layer.o
LD .build_release/src/caffe/test/test_data_transformer.o
LD .build_release/cuda/src/caffe/test/test_im2col_kernel.o
CXX/LD -o .build_release/test/test_all.testbin src/caffe/test/test_caffe_main.cpp

繼續等待,完成後輸入如下命令:

make runtest -j4

這裡就是一大波綠色的RUN OK了,

[ RUN      ] SplitLayerTest/0.Test
[       OK ] SplitLayerTest/0.Test (0 ms)
[ RUN      ] SplitLayerTest/0.TestSetup
[       OK ] SplitLayerTest/0.TestSetup (0 ms)
[ RUN      ] SplitLayerTest/0.TestGradient
[       OK ] SplitLayerTest/0.TestGradient (4 ms)
[----------] 3 tests from SplitLayerTest/0 (4 ms total)

[----------] Global test environment tear-down
[==========] 2021 tests from 267 test cases ran. (506614 ms total)
[  PASSED  ] 2021 tests.

至此make編譯caffe成功了。

3.Cmake編譯

同樣先給出官網教程,記錄如下:

在caffe根目錄下執行:

mkdir cbuild
cd cbuild
cmake ..

之後輸出一個配置檔案,大概選項如下:

-- ******************* Caffe Configuration Summary *******************
-- General:
--   Version           :   1.0.0-rc3
--   Git               :   unknown
--   System            :   Linux
--   C++ compiler      :   /usr/bin/c++
--   Release CXX flags :   -O3 -DNDEBUG -fPIC -Wall -Wno-sign-compare -Wno-uninitialized
--   Debug CXX flags   :   -g -fPIC -Wall -Wno-sign-compare -Wno-uninitialized
--   Build type        :   Release
-- 
--   BUILD_SHARED_LIBS :   ON
--   BUILD_python      :   ON
--   BUILD_matlab      :   OFF
--   BUILD_docs        :   ON
--   CPU_ONLY          :   OFF
--   USE_OPENCV        :   ON
--   USE_LEVELDB       :   ON
--   USE_LMDB          :   ON
--   ALLOW_LMDB_NOLOCK :   OFF
-- 
-- Dependencies:
--   BLAS              :   Yes (Atlas)
--   Boost             :   Yes (ver. 1.54)
--   glog              :   Yes
--   gflags            :   Yes
--   protobuf          :   Yes (ver. 2.5.0)
--   lmdb              :   Yes (ver. 0.9.10)
--   LevelDB           :   Yes (ver. 1.15)
--   Snappy            :   Yes (ver. 1.1.0)
--   OpenCV            :   Yes (ver. 2.4.8)
--   CUDA              :   Yes (ver. 8.0)
-- 
-- NVIDIA CUDA:
--   Target GPU(s)     :   Auto
--   GPU arch(s)       :   sm_30
--   cuDNN             :   Not found
-- 
-- Python:
--   Interpreter       :   /usr/bin/python2.7 (ver. 2.7.6)
--   Libraries         :   /usr/lib/x86_64-linux-gnu/libpython2.7.so (ver 2.7.6)
--   NumPy             :   /usr/lib/python2.7/dist-packages/numpy/core/include (ver 1.8.2)
-- 
-- Documentaion:
--   Doxygen           :   No
--   config_file       :   
-- 
-- Install:
--   Install path      :   /home/gph/Desktop/caffe-master/cbuild/install
-- 
-- Configuring done
-- Generating done
-- Build files have been written to: /home/gph/Desktop/caffe-master/cbuild

之後輸入

make -j 4

這裡-j 4因為我的機器是4核的。之後等到編譯,時間較長。完成後輸入:

make install

結果如下:

Linking CXX executable mnist/convert_mnist_data
[100%] Built target convert_mnist_data
Linking CXX executable siamese/convert_mnist_siamese_data
[100%] Built target convert_mnist_siamese_data
Linking CXX executable cpp_classification/classification
[100%] Built target classification
Linking CXX shared library ../lib/_caffe.so
Creating symlink /home/gph/Desktop/caffe-master/python/caffe/_caffe.so -> /home/gph/Desktop/caffe-master/cbuild/lib/_caffe.so
[100%] Built target pycaffe

至此,Cmake編譯完成。需要說明的是make和cmake編譯互不影響,之所以需要cmake編譯是因為樓主用Cmakelist.txt管理工程,需要新增caffe的標頭檔案和相應的庫,使用cmake編譯非常方便。具體參看我的另一篇部落格Caffe + ROS + OpenCV + Qt creator

遇到的問題記錄

1)cmake ..之後出現錯誤

CMake Error at CMakeLists.txt:83 (add_dependencies): The dependency
target “pycaffe” of target “pytest” does not exist.

目前還未解決,但是仍然可以繼續,只是好像要輸入兩次命令才行。這也是我重灌的原因之一,重灌就沒有這個錯誤。

2)庫錯誤

在利用cmake編譯caffe時,出現如下錯誤:

Linking CXX shared library ../../lib/libcaffe-d.so /usr/bin/ld:
/usr/local/lib/libcblas.a(cblas_sgemv.o): relocation R_X86_64_32
against `.rodata.str1.1’ can not be used when making a shared object;
recompile with -fPIC /usr/local/lib/libcblas.a: error adding symbols:
Bad value collect2: error: ld returned 1 exit status make[2]: *
[lib/libcaffe-d.so.1.0.0-rc3] Error 1 make[1]: *
[src/caffe/CMakeFiles/caffe.dir/all] Error 2 make: * [all] Error 2

解決方法: 編輯cbuild資料夾下的CMakeCache.txt,將

//Path to a library. Atlas_CBLAS_LIBRARY:FILEPATH=<path to
libcblas.a>

改為

//Path to a library.
Atlas_CBLAS_LIBRARY:FILEPATH=/usr/lib/libcblas.so //<path to
libcblas.so in your machine>

這就應該是機器上利用不同方式多次裝過這個庫,檔案較為混亂,找不到正確的庫造成的。所以大家安裝的時候能使用apt-get
install的儘量這樣安裝,除非你有明確的目的要原始碼安裝,否則確實要做很多工作,很“鍛鍊”人。

相關推薦

Ubuntu14.04通過makecmake編譯安裝caffe

1.安裝相關的依賴 按照官網的流程進行安裝,過程如下: 安裝通用的依賴: sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5

ubuntu16.04通過修改transmission原始碼編譯安裝transmission,使得其能夠通過ipv6在六維下載

    然後通過命令  xz -d transmission-2.04.tar.xz tar -xvf trans*.tar 進行解壓 2:首先更改metainfo.c中的內容 static intis_rfc2396_alnum( char ch ){   

Geant4采用makecmake編譯運行geant4自帶例子的方法

剛才 例子 1-1 build g++ 核數 emp cmake 編譯 該教程介紹如何將geant4中自帶的例子通過camke編譯成可執行文件,並運行程序。 1 在linux主目錄下創建一個geant4_workdir目錄,並將geant4自帶的例子B1復制到該目錄

mysql 5.5.32 源碼 cmake 編譯 安裝

mysql 5.5.32 源碼 cmak cmake工具安裝yum install cmake -y依賴包 yum install ncurses-devel -y 開始安裝mysql創建用戶和組groupadd mysqluseradd mysql -s /sbin/nologin -M -

Ubuntu14.04 無線網絡卡驅動安裝

由於新安裝的14.04是 沒有無線網絡卡驅動的,這裡需要自己安裝網絡卡驅動。 (第一步) 我們需要在win10下看到網絡卡型號 (第二步) 升級ubuntu核心(uname -sr可以看現在的核心版本) 在 http://kernel.ubuntu.com/~kernel

Ubuntu14.04+android-ndk-r10b+arm編譯libcurl-7.61.1,支援openssl-1.1.1(https)

相關依賴: android-ndk-r10b:ubuntu14.04搭建Android-NDK開發環境 android-arm:ubuntu14.04搭建Android-arm交叉編譯環境 openssl-1.1.1: ubuntu14.04+android-ndk-r10b+arm

ubuntu14.04搭建Android-arm交叉編譯環境

前面我們搭建了NDK開發環境 下面開始搭建arm交叉編譯環境 1.下載交叉編譯工具 進入到NDK根目錄:cd /home/wjt/AndroidWorkSpace/NDK_Tools/android-ndk-r10b 下載到指定路徑指令:./build/tools/make-st

Ubuntu14.04下Vim編輯器的安裝、解除安裝與配置

一    通過終端命令列安裝vim 1)在終端輸入下面命令     2)通過echo $?命令檢查安裝是否成功 如果返回結果是0,表示軟體成功安裝。 如果返回結果是非0,表示軟體安裝過程中出現問題。 3)如果在安裝vim時,顯示找不到什麼包,更新一下下載源就行了

linux下如何使用configure/make/make install命令編譯安裝解除安裝程式

原始碼的安裝一般由3個步驟組成:配置(configure)、編譯(make)、安裝(make install)。安裝成功的原始碼就是所謂的可執行檔案,在你不需要的時候,也是可以刪除/解除安裝(remove/uninstall)的。下面就逐個進行分析: 一、原始碼的配置 配置命令就

ubuntu14.04系統下mips交叉編譯環境搭建

1.安裝必要軟體 2.下載解壓buildroot 3.配置編譯 4.設定環境變數 1.安裝必要軟體    sudo apt-get install build-essential bison flex 2.下載解壓 buildroot    http://buildro

虛擬機器中在Ubuntu14.04下搭建QT交叉編譯環境--2014/8/14

一、Ubuntu安裝及配置 在windows上下載VMware10.0.2 並安裝,在網上找永久金鑰啟用。開啟後是中文版 在Ubuntu官網上下載ubuntu-14.04.1-desktop-i386 開啟虛擬機器,並建立新的虛擬機器,記憶體1g,硬碟20g 。虛擬磁碟檔案

Visual Studio 2015+cmake編譯安裝MD版的DCMTK

https://blog.csdn.net/chaoenhu/article/details/78200274 一、編譯環境 本文的編譯機器是Windows10 64位系統,使用VS2015和cmake3.7.2編譯DCMTK原始碼為64位包(執行時庫為MD或MDd)。 注(引用): /MT

ubuntu14.04 的ibus不能解除安裝安裝fcitx輸入法框架時可能有這個需求)。出現無system setting實用程式

每年的ubuntu新版本釋出,都會吸引一大批熱血青年。關注越多也讓ubuntu越來越好了。 使用ubuntu的人都會在安裝系統之後立即安裝順手的輸入法,也可能不會,看人。 安裝輸入法,對於中文輸入法的選擇,大多數人願意選擇'搜狗輸入法',抱歉大膽的這樣估計,但是'搜狗輸入法

ubuntu14.04下配置Java環境以及安裝最新版本的eclipse

首先是配置JDK 步驟二:首先在/usr/local目錄下建立一個名為java的目錄,然後執行命令: cd /usr/local/java && tar -xvzf  ~/Downloads/jdk-7u71-linux-i586.tar.gz 步驟三:修

Cmake編譯安裝MySQL完整版

MySQL二進位制包和原始碼包的區分 二進位制格式的包名字很長,都帶有版本號、適應平臺、適應的硬體型別等 mysql-5.0.45.tar.gz 是原始碼包 (編譯安裝) 原始碼格式僅僅就是一個版本號的tar包 mysql-5.0.45-linux-x8

ubuntu14.04下ipython5.5.0的安裝

下面介紹下linux安裝ipython原始碼安裝的方法: 1、ipython的原始碼下載頁面為:https://pypi.python.org/pypi/ipython或者是到git頁面下載:http

ubuntu 16.04 OpenCV3.2.0完全編譯安裝

    Opencv可以直接從庫中安裝,也可以自己手動編譯安裝。1、從庫中安裝是最簡單的方式,直接執行下面命令:    sudo apt-get install libopencv-dev python-opencv    如果安裝出錯,那麼可以更新一下源,或是換一個源。2、

Ubuntu14.04 Opencv2.4.9交叉編譯

         經過一個多星期苦逼中,終於把Opencv交叉編譯通過了。廢話不多說,把我過程分享出來,希望能夠讓你們少走些彎路。不同的linux系統、opencv版本、arm編譯器,opencv交叉編譯方法會有所不同。本文提供一個已驗證可實行的方法:Ubuntu14.04

ubuntu14.04系統下torch框架下安裝hdf5方法

1.執行如下命令:sudo apt-get install libhdf5-serial-dev hdf5-tools如圖所示:2.依次執行如下三條命令:git clone https://github

使用cmake編譯安裝mysql(原創整理)

從mysql 5.5 開始就要用cmake編譯安裝了 注意:此安裝是預設centos下已經安裝了最新工具包,比如GNU make, GCC,Perl, libncurses5-dev,如果在編譯安裝過程中發現有缺失的工具包,先yum install 單獨下載安裝再繼續即可。