'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-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
我觉得我可能需要为文件创建一个软 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_PATH
为 libboost
包含到 .so
的路径,但名称不同,假设它是 libboost_python-py37.so,在 Makefile 中进行相应更改。
# say it's python3.7
PYTHON_LIBRARIES ?= boost_python-py37 python3.7
然后做:
make all
我正在按照这篇文章安装 caffe:https://qengineering.eu/install-caffe-on-ubuntu-18.04-with-opencv-4.2.html
并在 运行 make all
之后出现此错误,并且 libboost-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
我觉得我可能需要为文件创建一个软 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_PATH
为 libboost
包含到 .so
的路径,但名称不同,假设它是 libboost_python-py37.so,在 Makefile 中进行相应更改。
# say it's python3.7
PYTHON_LIBRARIES ?= boost_python-py37 python3.7
然后做:
make all