一、安装依赖包:
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
sudo apt-get install libopenblas-dev liblapack-dev libatlas-base-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
sudo apt-get install git cmake build-essential
二、安装protobuf
1.删除系统原生protobuf
sudo rm -rf protoc
2.确认当前protobuf是否已删除
3.安装protobuf2.6.1
cd protobuf2.6.1
./configure
make
sudo make install
sudo ldconfig
4.确认当前protobuf版本
三、安装opencv3.4.6
mkdir build && cd build # 创建编译的文件目录,并进入该目录
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
注:在docker环境下安装时,碰到一个问题:/usr/bin/ld: warning: libzstd.so.1.3.7, needed by //opt/conda/lib/libtiff.so.5, not found (try using -rpath or -rpath-link)
解决方法:加上选项:-D BUILD_TIFF=ON
cmake -D BUILD_TIFF=ON -D CMAKE_BUILD_TYPE=Release -D ENABLE_PRECOMPILED_HEADERS=OFF -D CMAKE_INSTALL_PREFIX=/usr/local ..
make -j8 #编译
sudo make install #安装
pkg-config --modversion opencv #验证成功与否
四、安装依赖包
1)sudo apt-get install libhdf5-dev
五、安装caffe
sudo cp Makefile.config.example Makefile.config
1、修改Makefile.config
sudo gedit Makefile.config
应用 opencv 版本将
#OPENCV_VERSION := 3 修改为: OPENCV_VERSION := 3
修改 python 路径
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
2、修改Makefie
修改 caffe 目录下的 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
3、编译caffe
make all -j8
问题1: 在运行上面命令编译时,报错://opt/conda/lib/libpng16.so.16: undefined reference to `inflateValidate@ZLIB_1.2.9
原因:zlib的版本不兼容导致,这里指出是ZLIB1.2.9,本地安装的是zlib1.2.8
解决方法:
wget http://www.zlib.net/fossils/zlib-1.2.9.tar.gz tar -xvf zlib-1.2.9.tar.gz cd zlib-1.2.9 mkdir build cd build cmake .. make make install
sudo make runtest -j8 #测试caffe安装是否成功
sudo apt-get install python3.8-dev
sudo make pycaffe-j8 #生成最终版本
4.运行caffe
问题1: import caffe时报错:
Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/home/li.guangyao/Programming/caffe/python/caffe/__init__.py", line 1, in <module> from .pycaffe import Net, SGDSolver, NesterovSolver, AdaGradSolver, RMSPropSolver, AdaDeltaSolver, AdamSolver, NCCL, Timer File "/home/li.guangyao/Programming/caffe/python/caffe/pycaffe.py", line 13, in <module> from ._caffe import Net, SGDSolver, NesterovSolver, AdaGradSolver, ImportError: /home/li.guangyao/Programming/caffe/python/caffe/_caffe.so:
undefined symbol: _ZN5boost6python6detail11init_moduleER11PyModuleDefPFvvE
解决方法:
先使用以下命令,安装最新版本libboost: sudo apt-get install --no-install-recommends libboost-all-dev
打开caffe目录下Makefile文件:
将PYTHON_LIBRARIES := boost_python python2.7
改PYTHON_LIBRARIES := boost_python-py36 #py36需要改为你自己的python版本,如py34,py33
问题2:修改完问题1,指定
版本为3.6,编译make pycaffe时又报错:/usr/bin/ld: cannot find -lboost_python-py36PYTHON_LIBRARIES
解决方法:
1.下载包boost_1_67_0,进入boost源文件目录boost_1_67_0
2.运行以下两条命令:
./bootstrap.sh --with-libraries=python --with-toolset=gcc
./b2 cflags='-fPIC' cxxflags='-fPIC' --with-python include="/qp/3rd/anaconda3/include/python3.6m/"
3.sudo ./b2 install
编译安装成功后,/usr/local/lib下会有libboost_python36.so和libboost_python36.a,有些应用link时需要的是libboost_python3.so或者libboost_python3.a,我们建个软链:
cd /usr/local/lib
sudo ln -s libboost_python-py36.so libboost_python3.so
sudo ln -s libboost_python-py36.a libboost_python3.a
问题3:ModuleNotFoundError: No module named 'skimage'
解决方法:pip install scikit-image
问题4:ModuleNotFoundError: No module named 'google'
解决方法:pip install google
pip install protobuf