最近想用c++写一个简单的cnn网络,需要用到blas库,学习了网上大佬们的安装方法,尤其借鉴了这位大佬的博文:https://blog.csdn.net/weixin_35776029/article/details/52719079 (ps:标题都模仿人家的),遇到了一些问题,当然也解决了,后文会说,主要有些部分和大佬的不太一样,稍微记录一下,希望能帮助到看到这篇博文的你。
材料准备
1.下载blas库,下载地址:https://github.com/xianyi/OpenBLAS
2.下载并安装perl,下载地址:https://strawberryperl.com/
3.cmake下载官网:https://cmake.org/,我安装的版本是3.16.0,版本差距不是很大应该就可以.
开始安装
step1:安装blas,记录下载目录(此处千万注意:openblas库安装目录中千万不要出现中文字符,否则后面编译可能出错):我的是:D:\1_guo_ALL\OpenBLAS
step2:下载prel,
选择版本,64位就选上面的,32位就选下面的。
安装没啥好讲的,如果出现“把perl加入环境变量path”的选项,一定要勾选,没有就继续安装。然后测试:
step3:安装cmake,这个网上资料很多,而且安装的话也没啥好讲的。
step4:创建cmake生成目录,我的是:D:\1_guo_ALL\OpenBLAS\OpenBLAS_Bulid
step5:打开cmake,输入两个路径,上面是opencv下载路径,下面是cmake生成路径(就是前面两个目录)。
我的分别是:
D:/1_guo_ALL/OpenBLAS/OpenBLAS-develop/OpenBLAS-develop
D:/1_guo_ALL/OpenBLAS/OpenBLAS_Bulid
点击一次Configure,然后出现一个窗口,上面是vs的版面,下面选择默认就好。
然后点击generate直到红色部分变白。
step7:打开cmake生成目录,点击OpenBlLAS.sln,然后可以在vs上查看其代码,此时我们需要在vs中编译。
点击 视图->解决方案资源管理器,结果可以看到这些:
然后选择ALL_BUILD,右键生成
等待一段时间,最后出现“成功9个,失败0个”(我的是这样,如果失败太多的话可能就是没成功)
***step8:***打开D:\1_guo_ALL\OpenBLAS\OpenBLAS_Bulid\lib\DEBUG后出现openblas.lib,那大概率成功了。
step9: 下面就是配置环境了,新建c++项目,点击视图->资源管理器,右键项目名然后点击属性找到c++目录下的包含目录和库目录。
包含目录中输入:
D:\1_guo_ALL\OpenBLAS\OpenBLAS_Bulid
D:\1_guo_ALL\OpenBLAS\OpenBLAS_Bulid\generated
库目录中输入:
D:\1_guo_ALL\OpenBLAS\OpenBLAS_Bulid\lib\DEBUG
这里稍微说一下,包含目录中的路径下是.h的头文件,库目录中的路径下是.lib文件,有时候没有配置好,在运行代码中报错说找不到xxx.h文件多为包含目录没有配置好,找到对应xxx.h的路径加入进去,可能就不会报错了。
然后是 链接器->输入->附加依赖项,点解输入openblas.lib。
如我新建了一个blas_test的项目,右键属性。
***step:***改为debug x64
测试:
extern "C" {
#include <cblas.h>
}
#include <iostream>
int main() {
float a[1] = { 2 };
float b[1] = { 3 };
float c[1] = { 0 };
cblas_sgemm(CblasRowMajor,
CblasNoTrans, CblasNoTrans,
1, 1, 1,
1,
a, 1,
b, 1,
0,
c, 1);
std::cout << *c << std::endl;
system("pause");
return 0;
}
输出:
大功告成!!!