首先安装opencv,进入官网 : http://opencv.org/releases.html , 选择 3.1.0 版本的 source , 下载 opencv-3.1.0.zip
一般将其解压放在home下,然后进入opencv-3.1.0
建立文件夹build,cd build
执行cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
如果提示安装cmake,那就按照提示进行安装
然后make -j16,有的可能-j8这个根据你自己的电脑来确定的。
如果出现类似下面的错误
modules/cudalegacy/src/graphcuts.cpp:120:54:
error:‘NppiGraphcutState’ has not been declared
typedef NppStatus (*init_func_t)(NppiSize oSize,NppiGraphcutState** ppState, Npp8u* pDeviceMem);
这是由于opecv3.1与cuda8.0不兼容导致的。解决办法:
修改 /opencv-3.1.0/modules/cudalegacy/src/graphcuts.cpp 文件内容,如图:
然后编译安装sudo make install
然后安装caffe
gitclone https://github.com/BVLC/caffe.git
最好也放在home目录下
sudocp Makefile.config.example Makefile.config
修改 Makefile.config 文件内容:
将#USE_CUDNN := 1
修改成: USE_CUDNN := 1
将#OPENCV_VERSION := 3
修改为:
OPENCV_VERSION := 3
将#WITH_PYTHON_LAYER := 1
修改为 WITH_PYTHON_LAYER :=1
INCLUDE_DIRS:= $(PYTHON_INCLUDE) /usr/local/include
LIBRARY_DIRS:= $(PYTHON_LIB) /usr/local/lib /usr/lib
修改为:
INCLUDE_DIRS:= $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
LIBRARY_DIRS:= $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial
然后修改 Makefile文件
将:
NVCCFLAGS+=-ccbin=$(CXX)-Xcompiler-fPIC $(COMMON_FLAGS)
修改为:
NVCCFLAGS+=-D_FORCE_INLINES-ccbin=$(CXX)-Xcompiler-fPIC $(COMMON_FLAGS)
将:
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5
修改为:
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial
然后sudo make all -j16
sudo make test
sudo make runtest //后面也可添加-j16
在执行最后一句的时候可能出现错误:
执行下面三句即可解决:
sudo cp /usr/local/cuda-8.0/lib64/libcudart.so.8.0 /usr/local/lib/libcudart.so.8.0 && sudo ldconfig
sudo cp /usr/local/cuda-8.0/lib64/libcublas.so.8.0 /usr/local/lib/libcublas.so.8.0 && sudo ldconfig
sudo cp /usr/local/cuda-8.0/lib64/libcurand.so.8.0 /usr/local/lib/libcurand.so.8.0 && sudo ldconfig
这三句的意思大致是将cuda与它们建立软连接,这是在安装cudnn时最后的操作步骤,当然安装时我没有进行软连接,
这里补上了,出来混,迟早是要还的。
参考:
http://blog.youkuaiyun.com/a_z666666/article/details/72853346
此链接基本上没有错误,特别是安装那些包的时候