VMware+Ubuntu18.04+python3.6+caffe安装错误解决方法
一、出现fatal error: pyconfig.h: 没有那个文件或目录
1 PROTOC src/caffe/proto/caffe.proto 2 CXX .build_release/src/caffe/proto/caffe.pb.cc 3 CXX src/caffe/solver.cpp 4 CXX src/caffe/internal_thread.cpp 5 CXX src/caffe/parallel.cpp 6 CXX src/caffe/layer_factory.cpp 7 In file included from /usr/include/boost/python/detail/prefix.hpp:13:0, 8 from /usr/include/boost/python/args.hpp:8, 9 from /usr/include/boost/python.hpp:11, 10 from src/caffe/layer_factory.cpp:4: 11 /usr/include/boost/python/detail/wrap_python.hpp:50:11: fatal error: pyconfig.h: 没有那个文件或目录 12 # include <pyconfig.h> 13 ^~~~~~~~~~~~ 14 compilation terminated. 15 Makefile:591: recipe for target '.build_release/src/caffe/layer_factory.o' failed 16 make: *** [.build_release/src/caffe/layer_factory.o] Error 1
问题:在于安装python3.6时没有安装它的头文件。
解决方法:终端输入sudo apt-get install python3.6-dev命令安装解决。
二、使用make all编译时出现以下问题
/usr/bin/ld: 找不到 -lboost_system /usr/bin/ld: 找不到 -lboost_filesystem /usr/bin/ld: 找不到 -lboost_thread /usr/bin/ld: 找不到 -lboost_python3 collect2: error: ld returned 1 exit status Makefile:582: recipe for target '.build_release/lib/libcaffe.so.1.0.0' failed make: *** [.build_release/lib/libcaffe.so.1.0.0] Error 1
问题:/usr/bin/ld: 找不到 -lboost_system。
解决方法:使用命令locate libboost_system.so,若出现/usr/lib/x86_64-linux-gnu/libboost_system.so.1.65.1提示,使用sudo ln -s /usr/lib/x86_64-linux-gnu/libboost_system.so.1.65.1 /usr/lib/libboost_system.so命令即可解决。
/usr/bin/ld: 找不到 -lboost_filesystem、/usr/bin/ld: 找不到 -lboost_thread、/usr/bin/ld: 找不到 -lboost_thread同理。
问题:/usr/bin/ld: 找不到 -lboost_python3。
原因:在caffe编译配置文件Makefile.config里面的PYTHON_LIBRARIES := boost_python3 python3.6m 一行中,找不到boost_python3造成的。
解决方法:①、使用的是Python3.5,进入/usr/lib/x86_64-linux-gnu/ 下,查看有没有libboost_python-py3.5.so,如果有链接一下就可以用sudo ln -s libboost_python-py3.5.so libboost_python3.so命令即可。
②、使用的是Python3.6,发现是没有libboost_python-py3.6.so 文件,需要编一个。下载 boost_1_67_0.tar.gz:
# 下载boost_1_67_0.tar.gz wget http://sourceforge.net/projects/boost/files/boost/1.67.0/boost_1_67_0.tar.gz # 进入文件夹 cd boost_1_67_0/ # 生成 .so 文件 ./bootstrap.sh --with-libraries=python --with-toolset=gcc ./b2 --with-python include="/usr/include/python3.6m" # 安装文件
生成了 libboost_python3.6.so 等文件:
链接文件
sudo ln -s libboost_python36.so libboost_python3.so sudo ln -s libboost_python36.a libboost_python3.a sudo cp /usr/local/lib/libboost_python36.a /usr/lib/x86_64-linux-gnu/libboost_python-py36.a sudo cp /usr/local/lib/libboost_python36.so /usr/lib/x86_64-linux-gnu/libboost_python3.so