以下实验都在Ubuntu16.04环境下完成,其他系统环境仅做参考。
环境安装
sudo apt-get install --no-install-recommends build-essential cmake git libatlas-base-dev libboost-all-dev libgflags-dev libgoogle-glog-dev libhdf5-serial-dev liblapack-dev libleveldb-dev liblmdb-dev libopenblas-dev libopencv-dev libprotobuf-dev libsnappy-dev protobuf-c-compiler protobuf-compiler python-numpy
安装NVIDIA显卡驱动、cuda、cudnn、tensorrt
略。
遇到的一些问题
找不到hdf5.h
参考 https://blog.csdn.net/lisatiy/article/details/80366386
在进行 $make all
操作时,报错找不到 “hdf5.h”
需要更改"Makefile.config"文件中的包含目录
找到
INCLUDE_DIRS := $(PYTHON_INCLUDE)/usr/local/include
在后面加上"serial"的包含目录,即:
INCLUDE_DIRS := $(PYTHON_INCLUDE)/usr/local/include /usr/include/hdf5/serial/
同事需要修改"Makefile"文件,找到
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
要求对C++11的支持
参考 https://blog.csdn.net/u010158659/article/details/78110484
在“Makefile”文件中找到
CXXFLAGS += -pthread -fPIC $(COMMON_FLAGS) $(WARNINGS)
NVCCFLAGS += -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
# mex may invoke an older gcc that is too liberal with -Wuninitalized
MATLAB_CXXFLAGS := $(CXXFLAGS) -Wno-uninitialized
LINKFLAGS += -pthread -fPIC $(COMMON_FLAGS) $(WARNINGS)
在“CXXFLAGS”、“NVCCFLAGS”、“LINKFLAGS”行末,各添加-std=c++11
protobuf 安装
参考 https://blog.csdn.net/twilightdream/article/details/72953338
从 https://github.com/google/protobuf/releases/ 下载Source code
#安装 Protocol Buffer 依赖
sudo apt install autoconf automake libtool curl
#解压,进入解压后的文件夹,运行 autogen.sh 脚本
./autogen.sh
#运行 configure.sh 脚本
./configure
#编译未编译的依赖包
make
#检查依赖包是否完整
make check
#安装
sudo make install
#配置动态链接库
sudo ldconfig
#检查 Protocol Buffer 是否安装成功
protoc --version
opencv安装
下载源码并解压
mkdir build # 创建编译的文件目录
cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
make -j8 #编译
sudo make install #安装
pkg-config --modversion opencv