Linux下Ubuntun系统报错find_package(BLAS REQUIRED)找不到

Linux下Ubuntun系统报错find_package(BLAS REQUIRED)找不到

这次在windows的WSL2中遇到了一个非常奇怪的错误,就是

bash 复制代码
CMake Error at /usr/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
  Could NOT find BLAS (missing: BLAS_LIBRARIES)
Call Stack (most recent call first):
  /usr/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:594 (_FPHSA_FAILURE_MESSAGE)
  /usr/share/cmake-3.22/Modules/FindBLAS.cmake:1337 (find_package_handle_standard_args)
  cmake/ExternalBLASLAPACK.cmake:181 (find_package)
  CMakeLists.txt:148 (include)

此前,我已经使用下面的命令安装了依赖包:

bash 复制代码
sudo apt-get install libblas-dev
sudo apt-get install libatlas-base-dev
sudo apt install libopenblas-dev

使用下面命令进行包的查找,也没有问题:

bash 复制代码
ldconfig -p | grep blas

使用whereis blas命令进行查找,也ok:

bash 复制代码
whereis blas


所以最后确认是cmake的搜索路径问题。

1、cmake时候指定路径

在cmake时候指定路径,即可完成cmake(!!!注意一定要删除当前的cmake缓存,也就是build文件夹下的cmake相关内容):

bash 复制代码
 cmake .. -DCMAKE_PREFIX_PATH=/usr/lib/x86_64-linux-gnu/

对于删除cmake缓存,我直接用下面命令把build文件夹下面东西都删除了:

bash 复制代码
 rm -rf *

2、修改Cmakelist内容

第二种方法,可以在Cmakelist中进行路径指定,将库的路径赋予CMAKE_PREFIX_PATH ,这个路径 可以由上面展示的命令ldconfig -p | grep blas 返回内容得到:

bash 复制代码
  set(OPENBLAS_DIR /usr/lib/x86_64-linux-gnu/)
  list(APPEND CMAKE_PREFIX_PATH ${OPENBLAS_DIR})

  find_package(BLAS REQUIRED)
  find_package(LAPACK REQUIRED)

修改完内容后记得清除cmake缓存,不然可能还会报错!!!

相关推荐
重生之小比特13 小时前
【Linux系统】17 库制作与原理(下)
linux·运维·服务器
weixin_4509072813 小时前
[ZYNQ Linux] VCU使用
linux·zynq
acd1200913 小时前
Nginx 反向代理的缓冲区坑:后端响应大时接口偶发 502
java·运维·nginx
程序员清风13 小时前
AI 编程助手的权限边界:文件、命令、密钥与人工确认
运维·服务器·网络
wacsii13 小时前
【Linux进程(二)】深入 Linux 内核:进程状态切换与底层数据结构的秘密
linux·服务器
R&L_2018100113 小时前
LINUX CPU 热点分析
linux
CodeYp201914 小时前
第6讲:Ext 系列文件系统
linux·文件系统·ext
爱吃香菜的初学者14 小时前
十九.Linux——TCP协议(1)
linux·网络·tcp/ip
Rambo.Fan14 小时前
02 · 重建与修复手册(新服务器 playbook)
运维·服务器·django
Zevalin爱灰灰14 小时前
Linux入门第二部分(ARM裸机篇) 第三章 汇编LED驱动实验
linux·汇编·arm开发