我正在尝试使用Cuda 7.0和Python 2.7编译旧版本的Caffe。问题是我一直收到这个错误:
LD -o .build_release/lib/libcaffe.so
/usr/bin/ld: cannot find -lboost_python-py35
/usr/bin/ld: cannot find -lpython3.5m
collect2: error: ld returned 1 exit status
make: *** [.build_release/lib/libcaffe.so] Error 1
Makefile.config与示例几乎相同,只是我使用的是OpenCV_Version:= 3
我用谷歌搜索了,我不知道为什么汇编正在寻找python35 / 3.5的东西
有什么想法吗?
答案 0 :(得分:0)
你有一个大概的想法:你在某种程度上混合了环境中的版本。我从那个角度攻击它:看看包含了什么。在您的环境中搜索“35”和“3.5”引用:
env | egrep "35|3.5"
特别要看LD_LIBRARY_PATH和PATH。还要检查可疑文件的预期包。例如,
ldd .build_release/lib/libcaffe.so
您可能会发现需要从环境中删除Python3.5引用并重建早期的包。
答案 1 :(得分:0)
我认为您可能遇到以下问题。
注意:如果更新了Ubuntu操作系统,可能需要更新和重新编译Python层,因为Python模块不再有效。在这种情况下,再次执行此步骤。
for req in $(cat requirements.txt); do pip install $req; done
如有任何问题,请尝试:
for req in $(cat requirements.txt); do sudo -H pip install $req --upgrade; done
默认的Python版本是2.您可以编辑Makefile.conf 启用Python 3,但在链接阶段会失败: 在Ubuntu 16.04上找不到 boost_python3 。相反,这个文件 应 /usr/lib/x86_64-linux-gnu/libboost_python-py35.so.1.58.0。 这需要进一步测试。
检查link以获取更多信息。