【问题标题】:/usr/bin/ld: cannot find -lclapack in CentOS 7/usr/bin/ld: 在 CentOS 7 中找不到 -lclapack
【发布时间】:2018-09-05 00:14:22
【问题描述】:

我应该如何在 CentOS 7 中修复这个错误?

[jalal@goku c++]$ make
[ 25%] Linking CXX executable TestSVM
/usr/bin/ld: cannot find -lclapack
collect2: error: ld returned 1 exit status
make[2]: *** [TestSVM] Error 1
make[1]: *** [CMakeFiles/TestSVM.dir/all] Error 2
make: *** [all] Error 2

我有:

$ lsb_release -a
LSB Version:    :core-4.1-amd64:core-4.1-noarch
Distributor ID: CentOS
Description:    CentOS Linux release 7.4.1708 (Core) 
Release:    7.4.1708
Codename:   Core

这是我正在使用的存储库: https://github.com/sausax/pose_estimation/issues/1 https://github.com/sausax/pose_estimation

【问题讨论】:

  • 你认为我们为什么会知道你的这个库安装在哪里?
  • 您得到的错误是 C/C++ 编译器找不到给定库的情况下的一般错误,在这种情况下,“clapack”是 lapack 的 C 包装器。试试:yum install atlas atlas-devel lapack-devel blas-devel

标签: c++ makefile centos ld


【解决方案1】:

显然 CentOS 不存在这个库,所以我只是搜索了包含它的文件并将其删除:

[jalal@goku c++]$ grep -irn "lclapack"
CMakeLists.txt:5:set(CMAKE_CXX_FLAGS  "-lcblas -lclapack")
CMakeFiles/TestSVM.dir/link.txt:1:/usr/bin/c++  -lcblas -lclapack  -rdynamic CMakeFiles/TestSVM.dir/TestSVM.cpp.o  -o TestSVM -lopencv_calib3d -lopencv_contrib -lopencv_core -lopencv_features2d -lopencv_flann -lopencv_highgui -lopencv_imgproc -lopencv_legacy -lopencv_ml -lopencv_objdetect -lopencv_photo -lopencv_stitching -lopencv_superres -lopencv_ts -lopencv_video -lopencv_videostab 
CMakeFiles/TestSVM.dir/flags.make:5:CXX_FLAGS = -lcblas -lclapack   -std=gnu++11
CMakeFiles/TrainSVM.dir/link.txt:1:/usr/bin/c++  -lcblas -lclapack  -rdynamic CMakeFiles/TrainSVM.dir/TrainSVM.cpp.o  -o TrainSVM -lopencv_calib3d -lopencv_contrib -lopencv_core -lopencv_features2d -lopencv_flann -lopencv_highgui -lopencv_imgproc -lopencv_legacy -lopencv_ml -lopencv_objdetect -lopencv_photo -lopencv_stitching -lopencv_superres -lopencv_ts -lopencv_video -lopencv_videostab 
CMakeFiles/TrainSVM.dir/flags.make:5:CXX_FLAGS = -lcblas -lclapack   -std=gnu++11

这里也建议了类似的解决方案https://github.com/SciRuby/nmatrix/commit/d126005ca9ce8339c54a80accaa835904f304f6c

或者更好的是从 CMakeLists.txt 中删除它

set(CMAKE_CXX_FLAGS  "-lcblas -lclapack")

转换成

set(CMAKE_CXX_FLAGS  "-lcblas")

【讨论】:

    猜你喜欢
    • 2021-05-07
    • 2011-07-16
    • 2012-05-17
    • 2020-04-14
    • 2012-03-26
    • 2018-12-13
    • 2015-09-22
    • 2020-01-19
    • 2012-01-14
    相关资源
    最近更新 更多