'make all' 使用 OpenCV 4.2.0 为 Python3 在 Ubuntu 20.04 上安装 Caffe 时出错:/usr/bin/ld 找不到 lpython3.6m 或 lboost python3

'make all' error when installing Caffe on Ubuntu 20.04 with OpenCV 4.2.0 for Python3: /usr/bin/ld cannot find lpython3.6m or lboost python3

我正在按照这篇文章安装 caffe:https://qengineering.eu/install-caffe-on-ubuntu-18.04-with-opencv-4.2.html 并在 运行 make all 之后出现此错误,并且 libboost-all-devlibpython3 已经安装。

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

我觉得我可能需要为文件创建一个软 link 到路径或追加到我的路径,LIBRARY_PATH,或 LD_LIBRARY_PATH,但我实际上无法找到 libpython.so 或 libboost 文件,所以我不确定该怎么做。

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

python3 -V 

python3.6m -V

两者都应该 return 你 Python 3.6m,否则找出安装的 python 的确切版本或 [=63= 的版本] 你想使用,相应地在 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

如果 return 列表包含 libboost_python3.so,检查 LD_LIBRARY_PATH 是否包含到那个的路径(这里的路径例如:/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_PATHlibboost 包含到 .so 的路径,但名称不同,假设它是 libboost_python-py37.so,在 Makefile 中进行相应更改。

# say it's python3.7
PYTHON_LIBRARIES ?= boost_python-py37 python3.7

然后做:

make all