1. 程式人生 > >Windows使用mingw編譯openblas

Windows使用mingw編譯openblas

系統環境:win10
軟體環境:
(1)mingw 5.3,使用Qt5.11.1自帶的
(2)OpenBLAS-0.2.20
(3)Armadillo9.1

幾點說明:
(1)關於openblas在window下的使用多是介紹其window的預編譯版,使用VS編譯器,但筆者強迫症嚴重,平時儘量使用開源免費的工具/軟體,雖說VS Studio有社群版,但還是不喜歡一大堆安裝在電腦上,window下的mingw沒有像Linux系統下有make之類的工具,在上一篇文章中已經介紹了mingw配合msys來編譯gsl的,如法炮製也可以編譯openblas,具體安裝msys請參考筆者另一篇博文

https://blog.csdn.net/ouening/article/details/82993947

安裝完msys之後的檔案:
在這裡插入圖片描述

(2)本人使用的mingw直接採用Qt5.11.1自帶的,因為想使用Qt配合一些數值計算庫作GUI程式,為了保證程式的相容穩定性統一使用自帶的mingw,前面博文配置gsl也是為此服務的,下圖是關於gcc的一些資訊,記得gcc路徑要在環境變數裡面,或者是在前面博文裡面介紹的在msys資料夾下雙擊msys.bat開啟控制檯
在這裡插入圖片描述
(3)armadillo是一個C++矩陣運算庫,語法和matlab相似,其有些矩陣運算需要用到blas/cblas,根據官方文件使用openblas,故此文是為了記錄如何在window使用armadillo呼叫openblas過程的openblas編譯部分,關於armadillo配合Qt的使用準備後面再寫系統的博文記錄分享。

正題:
(1)下載openblas0.2.20版本,最新的0.3.2版本沒有測試過
在這裡插入圖片描述
(2)下載之後解壓,然後在msys雙擊msys.bat開啟的控制檯裡面cd到該路徑,檢視解壓後的檔案可以看到有一個Makefile檔案的了,直接執行make -j8 以8執行緒進行編譯。
注意:這裡出現了問題,本人在實驗室電腦編譯的時候可以順利編譯,同樣是Qt5.11.1版本自帶的mingw,在自己電腦上編譯就出錯了,有兩處錯誤,第一處是

make: [libs] Error 1 (ignored)

這個可以忽略,還能繼續編譯一段時間;

另一個錯誤是:

Makefile:138: recipe for target `libs' failed

其實這個錯誤前面還有比較詳細的內容,但是忘了儲存完整的錯誤資訊了,只記錄了前面這段錯誤。
如果出現了該錯誤提示,經過網上查詢並沒有直接答案,我是在https://github.com/xianyi/OpenBLAS/issues/687看到的回答想到的,就是將編譯的選項BINARY修改為32為,因為Qt5.11.1自帶的5.3版本的32位的,修改後的編譯命令變為:

make BINARY=32 -j8

接著就可以繼續編譯了,最終編譯成功的結果提示如下:

在這裡插入圖片描述

太晚了,關於armadillo在Qt連結openblas的使用下次有空再寫~~~