Linux下Ubuntun系统报错find_package(BLAS REQUIRED)找不到
这次在windows的WSL2中遇到了一个非常奇怪的错误,就是
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)
此前,我已经使用下面的命令安装了依赖包:
sudo apt-get install libblas-dev
sudo apt-get install libatlas-base-dev
sudo apt install libopenblas-dev
使用下面命令进行包的查找,也没有问题:
ldconfig -p | grep blas
使用whereis blas命令进行查找,也ok:
whereis blas
所以最后确认是cmake的搜索路径问题。
1、cmake时候指定路径
在cmake时候指定路径,即可完成cmake(!!!注意一定要删除当前的cmake缓存,也就是build文件夹下的cmake相关内容):
cmake .. -DCMAKE_PREFIX_PATH=/usr/lib/x86_64-linux-gnu/
对于删除cmake缓存,我直接用下面命令把build文件夹下面东西都删除了:
rm -rf *
2、修改Cmakelist内容
第二种方法,可以在Cmakelist中进行路径指定,将库的路径赋予CMAKE_PREFIX_PATH,这个路径可以由上面展示的命令ldconfig -p | grep blas返回内容得到:
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缓存,不然可能还会报错!!!