我正在关注此文章以安装caffe:https://qengineering.eu/install-caffe-on-ubuntu-18.04-with-opencv-4.2.html
并在已安装make alllibboost-all-dev的情况下运行libpython3后得到此错误。

LD -o .build_release/lib/libcaffe.so.1.0.0
/usr/bin/ld: cannot find -lboost_python3
/usr/bin/ld: cannot find -lpython3.6m
collect2: error: ld returned 1 exit status
make: *** [Makefile:596: .build_release/lib/libcaffe.so.1.0.0] Error 1
我有一种感觉,我可能需要为文件创建一个软链接(soft link),或者将其附加到我的PATH,LIBRARY_PATH或LD_LIBRARY_PATH中,但实际上无法找到libpython.so或libboost文件,因此我无法找到确定该怎么做。

最佳答案

首先检查python指向的python3的确切版本,以及您是否有python3.6m

python3 -V

python3.6m -V
两者都应返回Python 3.6m,否则找出已安装的python的确切版本或要使用的python版本,请在Makefile中进行相应的更改。
# say it's python3.7
PYTHON_LIBRARIES ?= boost_python3 python3.7
找到libboost:
locate boost | fgrep .so
如果安装了libboost-all-dev,则定位路径将是/usr/lib/x86_64-linux-gnu//usr/lib64//usr/lib//usr/local/lib/或类似的东西。
然后根据您获得的路径(例如您获得/usr/lib/),查找确切的libboost.so:
ls /usr/lib/libboost_python*.so
如果返回列表包含libboost_python3.so,请检查LD_LIBRARY_PATH是否包含该路径(此处为ex的路径:/usr/lib),否则执行以下操作:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/libboost/
您可以将其添加到~/.bashrc中:
echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/libboost/' >> ~/.bashrc
如果LD_LIBRARY_PATH包括.so路径libboost ,但名称不同,则说它是libboost_python-py37.so,因此在Makefile中进行更改。
# say it's python3.7
PYTHON_LIBRARIES ?= boost_python-py37 python3.7
然后做:
make all

09-27 18:13