我正在关注此文章以安装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
我有一种感觉,我可能需要为文件创建一个软链接(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