找不到lpython2:MatCaffe安装

2024-05-05 22:01:45 发布

您现在位置:Python中文网/ 问答频道 /正文

在构建MatCaffe(Caffe的Matlab包装器)的过程中,我遇到了以下错误:

[ 96%] Built target convert_mnist_data
[ 96%] Built target convert_mnist_siamese_data
[ 98%] Built target pycaffe
[100%] Building Matlab interface: /home/trunks/Downloads/caffe-master/matlab/+caffe/private/caffe_.mexa64
Building with 'g++'.
Warning: You are using gcc version '4.8.2'. The version of gcc is not supported. The version currently supported with MEX is '4.7.x'. For a list of currently supported compilers see: http://www.mathworks.com/support/compilers/current_release.
Warning: You are using gcc version '4.8.2-19ubuntu1)'. The version of gcc is not supported. The version currently supported with MEX is '4.7.x'. For a list of currently supported compilers see: http://www.mathworks.com/support/compilers/current_release.
/usr/bin/ld: cannot find -lpython2
collect2: error: ld returned 1 exit status

make[2]: *** [../matlab/+caffe/private/caffe_.mexa64] Error 255
make[1]: *** [matlab/CMakeFiles/matlab.dir/all] Error 2
make: *** [all] Error 2

经过仔细检查,我发现使用以下命令,以下文件是导致上述错误的原因:

^{pr2}$

它向我揭示了以下几点:

./matlab/CMakeFiles/matlab.dir/build.make:53:   cd /home/trunks/Downloads/caffe-master/build/matlab && /usr/local/MATLAB/R2014a/bin/mex -output /home/trunks/Downloads/caffe-master/matlab/+caffe/private/caffe_.mexa64 /home/trunks/Downloads/caffe-master/matlab/+caffe/private/caffe_.cpp -DCPU_ONLY -DWITH_PYTHON_LAYER -DGTEST_USE_OWN_TR1_TUPLE -I/home/trunks/Downloads/caffe-master/src -I/usr/include -I/home/trunks/Downloads/caffe-master/build/external/glog-install/include -I/home/trunks/Downloads/caffe-master/build/external/gflags-install/include -I/home/trunks/Downloads/caffe-master/build/include -I/usr/local/include/opencv -I/usr/local/include -I/usr/include/python2.7 -I/home/trunks/anaconda/lib/python2.7/site-packages/numpy/core/include -I/home/trunks/Downloads/caffe-master/include -I/home/trunks/Downloads/caffe-master/build -L/home/trunks/Downloads/caffe-master/build/lib -L/usr/lib/x86_64-linux-gnu -L/home/trunks/Downloads/caffe-master/build/external/gflags-install/lib -L/home/trunks/Downloads/caffe-master/build/external/glog-install/lib -L/usr/lib -L/usr/local/lib -L/usr/local/lib -L/usr/local/lib -L/usr/local/lib -lcaffe -lboost_system -lboost_thread -lpthread -lgflags -lglog -lhdf5_hl -lhdf5 -llmdb -lleveldb -lsnappy -lopencv_core -lopencv_highgui -lopencv_imgproc -lopencv_imgcodecs -lopenblas -lpython2 -lboost_python -lprotobuf

因此,我将相应的-lpython2改为-lpython2.7,希望能解决这个问题。但没有屈服。在

我还尝试了以下方法:

  1. 删除CMakeCache.txt做些什么。但它没有起作用。在
  2. 我编辑了默认值CMakeLists.txt文件/cmake master中的文件,以更改某些默认设置。我发现默认的python版本设置在CMakeLists.txt文件在咖啡馆是2。在

    //指定要使用的python版本 Python_版本:STRING=2.7

我将其更改为2,并在一个新的构建文件夹中重复了整个configure generate make过程。但没有屈服。每次都是同一个matlab/制造文件显示-lpython2,直接将其更改为2.7不会产生结果。在

  1. 我试着研究matlab/制造文件,但在那里找不到任何我可以直接连接到这个错误的东西。在

任何有力的帮助都将不胜感激。我在Ubuntu14.04上使用Matlab2014a。在


Tags: 文件buildmasterhomemakeincludeversionlib
3条回答

这是因为中的caffe_parse_linker_libs函数中存在错误实用程序.cmake它将/usr/lib/x86_64-linux-gnu/libpython2.7.so转换为-lpython2

这可以通过替换(在cmake中)来解决/实用程序.cmake)在

elseif(IS_ABSOLUTE ${lib})
  get_filename_component(name_we ${lib} NAME_WE)
  get_filename_component(folder  ${lib} PATH)

  string(REGEX MATCH "^lib(.*)" __match ${name_we})
  list(APPEND libflags -l${CMAKE_MATCH_1})
  list(APPEND folders    ${folder})
else()

使用

^{pr2}$

更新的函数正确地将/usr/lib/x86_64-linux-gnu/libpython2.7.so转换为-lpython2.7

根据错误消息和命令,导致它,python库似乎安装在异常位置,因此ld(linker)在其默认路径中找不到它。由于CMake脚本已经找到了头,它还应该设置mex可执行文件来处理库本身,但由于某些原因它没有这样做

使构建包工作的最简单方法是将LD_LIBRARY_PATH设置到python库所在的目录,然后运行make。如果要修复CMake脚本,此wiki可能会对您有所帮助。在

感谢@Tsyvarev的回答。我找到了一个相当简单的解决办法。我刚刚创建了一个符号链接(libpython2.so),它指向/usr/lib文件夹中的libpython2.7.so。这就解决了问题。libpython2.7.so也存在于/usr/lib中,所以我认为这不是异常安装的问题。在

相关问题 更多 >