当前位置:   article > 正文

caffe源码编译——含依赖包源码编译_如何确定caffe依赖包的版本

如何确定caffe依赖包的版本

1 依赖包版本说明

       表格中列举了我试验成功的所有依赖包及其对应版本号,部分依赖包可能和官方文档中所推荐的不同。经本人验证,caffe编译过程中所需的依赖包版本相互之间有严重的依赖关系,当然其他版本可能也能正常运行,但如果想节省时间的话,不妨试试以下这些吧~

Package

Version

Description

Protobuf

3.6.0

Protocol Buffers - Google's data interchange format.

Leveldb

1.20

LevelDB is a fast key-value storage library written at Google that provides an ordered mapping from string keys to string values.

Snappy

1.1.6

A fast compressor/decompressor.

Opencv

3.3.1

Open Source Computer Vision Library.

Boost

1.56.0

Boost provides free peer-reviewed portable C++ source libraries.

Atlas

3.8.4

线性代数库

Gflags

2.1.2

The gflags package contains a C++ library that implements commandline flags processing.

Glog

0.3.3

Google logging module

Lmdb

0.9.18

轻量级内存映射数据库

2 依赖包源码编译安装

2.1 Protobuf

  1. ./autogen.sh
  2. ./configure --prefix=/path/to/install
  3. make
  4. make check
  5. make install
  6. protoc --version #检查是否安装成功
  • Python binding安装(这样可以确保caffe和pycaffe使用的是同一版protobuf

  1. cd $root/python
  2. python setup.py build
  3. python setup.py install


2.2 leveldb

  1. make -j8
  2. cp -r include/* path_to_install/include/
  3. cp out-shared/* path_to_install/lib/

 

2.3 gflags

  1. mkdir build
  2. cd build
  3. export CXXFLAGS="-fPIC”
  4. cmake .. -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=/path/to/install
  5. make VERBOSE=1
  6. make -j8
  7. make install

2.4 glog

  1. ./configure --prefix=/path/to/install
  2. make -j8
  3. make install

 

2.5 boost

  1. ./bootstrap.sh --prefix=path/to/install
  2. ./b2 install

 

2.6 opencv

  1. mkdir build
  2. cd build
  3. cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/path/to/install
  4. make -j8
  5. make install

2.7 snappy

  1. ./configure --prefix=/path/to/install
  2. make
  3. make install

2.8 atlas

  • 查阅了多方资料,大家都不太建议自行编译,建议使用apt-get等工具安装
  • sudo apt-get install libatlas-base-dev

2.9 lmdb

  1. cd lmdb-xxx/libraries/liblmdb
  2. # 修改29行:prefix=/path/to/install
  3. vim Makefile
  4. make
  5. make install

3 caffe 编译

  1. # Step1:备份makefile.config --------------
  2. cp Makefile.config.example Makefile.config
  3. # ----------------------------------------
  4. # Step2:根据自己的路径 对makefile.config进行相应修改 ----------------------------------------------
  5. # 因为我们使用的是OpenCV3,所以需要取消注释
  6. # Uncomment if you're using OpenCV 3
  7. OPENCV_VERSION := 3
  8. # 设置CUDA路径,若编译CPU版,则需要打开CPU_ONLY选项
  9. # CUDA directory contains bin/ and lib/ directories that we need.
  10. CUDA_DIR := /usr/local/cuda
  11. # 设置Python头文件路径,主要是Python.h和numpy头文件
  12. # We need to be able to find Python.h and numpy/arrayobject.h.
  13. PYTHON_INCLUDE := /home/conda/include/python2.7/ \
  14.                   /home/conda/lib/python2.7/site-packages/numpy/core/include
  15. # 设置Python库目录
  16. # We need to be able to find libpythonX.X.so or .dylib.
  17. PYTHON_LIB := /home/conda/lib
  18. # 设置其他依赖包的头文件路径和库目录
  19. # Whatever else you find you need goes here.
  20. INCLUDE_DIRS := $(PYTHON_INCLUDE) /home/local/include
  21. LIBRARY_DIRS := $(PYTHON_LIB) /home/local/lib
  22. #------------------------------------------------------------------------------------------------
  23. # Step3: 编译 --------------
  24. make all -j8
  25. make test
  26. make runtest
  27. #---------------------------
  • 编译—pycaffe

  1. make pycaffe
  2. export PYTHONPATH=$caffe_root/python:$PYTHONPATH

 

4 问题汇总

 

Q1: 在python中import caffe时,提示"No module named google.protobuf.internal"

A: 卸载掉现在的protobuf,参考2.1重新安装。

 

Q2: xxx/libstdc++.so.6: version `CXXABI_1.3.9' not found

A: 参考https://blog.csdn.net/zx714311728/article/details/69628836

 

Q3: ImportError: numpy.core.multiarray failed to import

A: 卸载numpy,重新安装一个版本号>1.14的numpy

 

Q4: import caffe 时出现Intel MKL FATAL ERROR: Cannot load libmkl_avx2.so

A: 参考https://blog.csdn.net/u010335339/article/details/51501246

 

Q5: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support is currently experimental, and must be enabled with the -std=c++11 or -std=gnu++11 compiler options.

A: 说明所使用的编译器默认不是C++11标准,需要修改caffe/Makefile相应位置,添上-std=c++11选项。具体有以下几处:

  1. # <caffe/Makefile>
  2. 414 CXXFLAGS += -pthread -fPIC -std=c++11 $(COMMON_FLAGS) $(WARNINGS)
  3. 415 NVCCFLAGS += -ccbin=$(CXX) -Xcompiler -fPIC -std=c++11 $(COMMON_FLAGS)
  4. 507 @ echo CXX/LD -o $@ $<
  5. 508 $(Q)$(CXX) -shared -o $@ $(PY$(PROJECT)_SRC) \
  6. 509 -o $@ $(LINKFLAGS) -l$(LIBRARY_NAME) $(PYTHON_LDFLAGS) \
  7. 510 -Wl,-rpath,$(ORIGIN)/../../build/lib -std=c++11
  8. 572 @ echo LD -o $@
  9. 573 $(Q)$(CXX) -shared -o $@ $(OBJS) $(VERSIONFLAGS) $(LINKFLAGS) $(LDFLAGS) -std=c++11
  10. 603 @ echo CXX/LD -o $@ $<
  11. 604 $(Q)$(CXX) $(TEST_MAIN_SRC) $(TEST_OBJS) $(GTEST_OBJ) \
  12. 605 -o $@ $(LINKFLAGS) $(LDFLAGS) -l$(LIBRARY_NAME) -Wl,-rpath,$(ORIGIN)/../lib -std=c++11
  13. 609 @ echo LD $<
  14. 610 $(Q)$(CXX) $(TEST_MAIN_SRC) $< $(GTEST_OBJ) \
  15. 611 -o $@ $(LINKFLAGS) $(LDFLAGS) -l$(LIBRARY_NAME) -Wl,-rpath,$(ORIGIN)/../lib -std=c++11
  16. 615 @ echo LD $<
  17. 616 $(Q)$(CXX) $(TEST_MAIN_SRC) $< $(GTEST_OBJ) \
  18. 617 -o $@ $(LINKFLAGS) $(LDFLAGS) -l$(LIBRARY_NAME) -Wl,-rpath,$(ORIGIN)/../lib -std=c++11
  19. 625 @ echo CXX/LD -o $@
  20. 626 $(Q)$(CXX) $< -o $@ $(LINKFLAGS) -l$(LIBRARY_NAME) $(LDFLAGS) \
  21. 627 -Wl,-rpath,$(ORIGIN)/../lib -std=c++11
  22. 630 @ echo CXX/LD -o $@
  23. 631 $(Q)$(CXX) $< -o $@ $(LINKFLAGS) -l$(LIBRARY_NAME) $(LDFLAGS) \
  24. 632 -Wl,-rpath,$(ORIGIN)/../../lib -std=c++11

Q6: 在编译MobileNet-Yolo时遇到这样的问题:opencv-3.3.1/lib/libopencv_videoio.so.3.3: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make: *** [.build_release/examples/ssd/ssd_detect.bin] Error 1 

A: 因为Makefile里有个小bug,在使用OpenCV3时少引了一个库,在Makefile的第198行后面添上opencv_videoio即可。

 

Q7: 编译caffe-ssd时遇到如下问题:/lib/libcaffe.so: undefined reference to `boost::re_detail::cpp_regex_traits_implementation<char>::transform(char constmake: *** [.build_release/tools/upgrade_net_proto_binary.bin] Error 1
*, char const*) const'

A: 在Makefile第181行后面添加boost_regex

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/807684
推荐阅读
相关标签
  

闽ICP备14008679号