【问题标题】:caffe installation stuck at "Linking CXX shared library ../../lib/libcaffe.so"caffe 安装卡在“链接 CXX 共享库 ../../lib/libcaffe.so”
【发布时间】:2018-08-22 14:56:50
【问题描述】:

我在尝试使用 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)
-- 

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

【问题讨论】:

  • 您的库路径存在问题,导致共享库出现问题:试试这个并检查其他库路径:export LD_LIBRARY_PATH=/usr/local/cuda/lib64/
  • @JayantAgrawal 感谢您的评论!我尝试了这条路,但仍然遇到同样的问题。有没有办法找到这个“opencv_dep_cudart”文件?我试过“找到opencv_dep_cudart”,但找不到它

标签: opencv ubuntu caffe ubuntu-16.04


【解决方案1】:

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

步骤

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

【讨论】:

    【解决方案2】:

    我遇到了同样的问题。我在Find_package(OpenCV) 使用的文件OpenCVModules-release.cmake 中找到了标志-lopencv_dep_cudartOpenCVModules-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 路径。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-01
      • 2021-10-11
      • 1970-01-01
      相关资源
      最近更新 更多