caffe安装卡在“链接CXX共享库../../lib/libcaffe.so"

时间:2016-10-08 04:15:20

标签: opencv ubuntu caffe ubuntu-16.04

我在尝试使用cmake构建caffe时遇到了一个问题(尝试使用cmake,因为make经常给我错误,但事实证明cmake没有更好......)。以下是错误消息:

[ 82%] Linking CXX shared library ../../lib/libcaffe.so
/usr/bin/ld: cannot find -lopencv_dep_cudart
collect2: error: ld returned 1 exit status
src/caffe/CMakeFiles/caffe.dir/build.make:3284: recipe for target 'lib/libcaffe.so.1.0.0-rc3' failed
make[2]: *** [lib/libcaffe.so.1.0.0-rc3] Error 1
CMakeFiles/Makefile2:272: recipe for target 'src/caffe/CMakeFiles/caffe.dir/all' failed
make[1]: *** [src/caffe/CMakeFiles/caffe.dir/all] Error 2
Makefile:127: recipe for target 'all' failed
make: *** [all] Error 2

我尝试在线搜索,但没有找到与丢失-lopencv_dep_cudart相关的更多信息。

我正在运行Ubuntu 16.04。 gcc和gcc ++版本都是4.9。安装了Opencv,其版本为2.4.13。下面是cmake ..输出的一部分,它显示了caffe的依赖关系(我想我已经安装了所有依赖项):

-- Dependencies:
--   BLAS              :   Yes (Atlas)
--   Boost             :   Yes (ver. 1.58)
--   glog              :   Yes
--   gflags            :   Yes
--   protobuf          :   Yes (ver. 3.0.2)
--   lmdb              :   Yes (ver. 0.9.17)
--   LevelDB           :   Yes (ver. 1.18)
--   Snappy            :   Yes (ver. 1.1.3)
--   OpenCV            :   Yes (ver. 2.4.13)
--   CUDA              :   Yes (ver. 8.0)
-- 
-- NVIDIA CUDA:
--   Target GPU(s)     :   Auto
--   GPU arch(s)       :   sm_61
--   cuDNN             :   Yes (ver. 5.1.5)
-- 
-- Python:
--   Interpreter       :   /usr/bin/python2.7 (ver. 2.7.12)
--   Libraries         :   /usr/lib/x86_64-linux-gnu/libpython2.7.so (ver 2.7.12)
--   NumPy             :   /home/jack/.local/lib/python2.7/site-packages/numpy/core/include (ver 1.11.1)
-- 

有人可以提供建议吗?如果需要更多信息,请告诉我。非常感谢提前!

2 个答案:

答案 0 :(得分:1)

我有类似的问题。在线论坛中找到的解决方案(例如在set(CUDA_USE_STATIC_CUDA_RUNTIME OFF)中使用CMakeLists.txt)并没有解决我的问题。但是你可以破解你的cmake文件来解决这个错误。

步骤

  1. 使用set(CMAKE_VERBOSE_MAKEFILE ON)
  2. 在cmake中启用详细信息
  3. 执行make | grep lopencv_dep_cudart
  4. 执行链接的命令将突出显示字符串。记下具有搜索字符串的cmake文件的路径。
  5. 复制命令并在上述路径中的shell中运行它,但没有-lopencv_dep_cudart选项。希望命令能够无错误地执行
  6. 现在再次运行make。

答案 1 :(得分:0)

我遇到了同样的问题。我在文件{strong> OpenCVModules-release.cmake 中找到了-lopencv_dep_cudart标志,Find_package(OpenCV)使用了该标志: OpenCVModules-release.cmake

我通过使用cmake的FindPkgConfig模块找到OpenCV库来解决了这个问题:

# firstly, add your/path/to/opencv.pc to system environment variable PKG_CONFIG_PATH   
# modify the file Dependencies.cmake 
find_package(PkgConfig REQUIRED)
pkg_check_modules(OpenCV REQUIRED opencv)
include_directories(SYSTEM ${OpenCV_INCLUDE_DIRS})
list(APPEND Caffe_LINKER_LIBS opencv_core opencv_highgui opencv_imgproc)    

或者,您也可以直接将OpenCV_INCLUDE_DIRS和OpenCV_LIBS设置为您的OpenCV路径。