1. 具体问题描述如下:
CXX examples/cifar10/convert_cifar_data.cpp
AR -o .build_release/lib/libcaffe.a
LD -o .build_release/lib/libcaffe.so.1.0.0
/usr/bin/ld: 找不到 -lboost_python3
collect2: error: ld returned 1 exit status
Makefile:585: recipe for target '.build_release/lib/libcaffe.so.1.0.0' failed
make: *** [.build_release/lib/libcaffe.so.1.0.0] Error 1
2. 原因分析:
在caffe编译配置文件Makefile.config里面的PYTHON_LIBRARIES := boost_python3 python3.6m 一行中,找不到boost_python3造成的。
3. 解决办法:
- 使用的是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
如果使用的是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
这样就完成了