Qt5配置开源GSL数学库

GNU科学库(英语:GSL - GNU Scientific Library),是一套为 C语言和 C++开发者提供的数值计算函数库,多用于应用数学和科学。软件属于自由软件,在 GNU 通用公共许可证下发布。

这套数值计算函数库提供了大量的数学运算功能,比如随机数生成器,特殊函数以及最小二乘拟合。有超过1000个函数包含在该数值计算库和扩展的测试包中。

下面介绍在Qt5环境中搭载GSL库的方法和步骤。

下载并安装Qt5

下载Qt5请参考Qt下载(多种下载通道+所有版本)将下载并安装Qt5.9.8 LTS。

安装Qt5请参考图解Qt安装(Windows平台)

环境配置

MinGW环境配置

MinGW(Minimalist GNU for Windows),又称mingw32,是将GCC编译器和GNU Binutils移植到Win32平台下的产物,包括一系列头文件(Win32API)、库和可执行文件。

另有可用于产生32位及64位Windows可执行文件的MinGW-w64项目,是从原本MinGW产生的分支。如今已经独立发展。

MinGW是从Cygwin(1.3.3版)基础上发展而来。Qt5.9.8使用MinGW 5.3编译器编译程序。

将mingw的bin目录添加进系统的环境变量,告诉系统已经安装了mingw编译器,并且可以被使用。Qt5自带的mingw的安装路径为C:\Qt\Qt5.9.8\5.9.8\mingw53_32,这里我们需要将C:\Qt\Qt5.9.8\5.9.8\mingw53_32\bin目录添加进入系统环境变量。

系统环境变量的设置方法为:【计算机】->【属性】->【高级系统设置】->【环境变量】->【系统变量】->【Path】。

MSYS环境配置

MSYS是bash,make,gawk和grep等GNU实用程序的集合,以允许构建依赖于传统UNIX工具的应用程序和程序。 它旨在补充MinGW和cmd shell的缺陷。

一个示例是构建一个使用自动工具构建系统的库。 用户通常会先运行“ ./configure”,然后运行“ make”来构建它。 配置外壳程序脚本需要Windows系统上不存在的外壳程序脚本解释器,但由MSYS提供。

一个常见的误解是MSYS是“ Windows上的UNIX”,MSYS本身不包含编译器或C库,因此不能将UNIX程序神奇地移植到Windows上,也不能提供任何特定于UNIX的功能,例如case- 敏感文件名。 寻找此类功能的用户应改用Cygwin或Microsoft的Interix。

msys的下载网址为:

msys+7za+wget+svn+git+mercurial+cvs-rev13.7z

上述网址给出的是一个压缩包,直接解压就可以使用。

将msys+7za+wget+svn+git+mercurial+cvs-rev13.7z解压到C:\Qt\Qt5.9.8\5.9.8\mingw53_32。

仅将msys解压后并不能直接使用,因为对于msys而言,它还不知道mingw编译器所处位置,因此需要对msys的环境进行配置。首先需要在msys的路径下创建一个名为mingw的空文件夹,路径为C:\Qt\Qt5.9.8\5.9.8\mingw53_32\msys\mingw。然后修改
C:\Qt\Qt5.9.8\5.9.8\mingw53_32\msys\etc\fstab中的内容,如下所示。

1
C:/Qt/Qt5.9.8/Tools/mingw530_32 /mingw

通过上述环境配置,当启动msys时,将Qt5的mingw编译直接挂载到/mingw目录下。

双击msys文件夹下msys.bat即可运行msys,使用cd命令进入/mingw目录下,我们就会发现此目录下文件就是C:\Qt\Qt5.9.8\Tools\mingw530_32对应的文件。

跳转到gsl-2.6文件夹,即可开始编译链接gsl。

下载并编译安装GSL

从此处 http://ftpmirror.gnu.org/gsl/ 下载最新的GSL-2.6。然后采用如下步骤编译GSL:

  1. 运行msys,进入GSL源文件所在目录
  2. ./configure
  3. make -j8
  4. make install

Qt调用GSL库

创建Qt工程

为了测试GSL数学库能够在Qt环境中运行,新建一个控制台工程进行测试。

新建控制台应用程序的步骤为:【Welcome】->【New Project】->【Application】->【Qt Console Application】->【Choose】->【将工程命名为GslTest】。

引用GSL库

在GslTest项目的工程目录内,新建名为gsl的文件夹。该文件夹的内容如图1所示。

gsl文件夹结构

图1 gsl文件夹结构

gsl文件夹下lib、include、bin中内容为编译安装GSL过程中生成的头文件、库文件及生成的相关exe文件,主要从C:\Qt\Qt5.9.8\5.9.8\mingw53_32\msys路径下提取。

此外,在gsl目录下新建gsl.pro文件,其内容如下:

1
2
3
4
5
# 宏定义项,指明采用GSL,因为有些函数需要使用dll
DEFINES += GSL_DLL
INCLUDEPATH += $$PWD\include
LIBS += -L$$PWD\lib -llibgsl
LIBS += -L$$PWD\lib -llibgslcblas

然后在GslTest的项目文件GslTest.pro末尾引用gsl.pro文件,如下所示。

1
include($$PWD/gsl/gsl.pro)

修改GslTest的main.cpp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <QCoreApplication>
#include <gsl/gsl_sf_bessel.h>
#include <math.h>
#include <iostream>

int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
double x=10.0;
double y=gsl_sf_bessel_J0(x);
std::cout<<"J0("<<x<<")="<<y<<std::endl;

return a.exec();
}

运行GslTest

GslTest运行结果

图2 GslTest运行结果

参考链接

  1. Qt下载(多种下载通道+所有版本),by C语言中文网.
  2. 图解Qt安装(Windows平台),by C语言中文网.
  3. GSL - GNU Scientific Library,by gnu.
  4. QT5环境下配置GSL数学库,by 木小猿.
  5. GNU科学库,by wikipedia.
  6. 【ICPC-455】C++ 常用数学函数库,by 陈国林.
  7. MinGW,by wikipedia.
  8. MinGW和MSYS区别和关系以及MinGW&MSYS在Win7中安装并编译x264,by FreeApe.
  9. 最强数学库GSL(GNU Scientific Library) Qt环境下部署,by 尘中远.
  10. Qt5.9.6使用MSVC(VS2017)开发环境搭建,by KirkSong.
  11. QT - OSG 开发环境配置,by 程序小哥.
  12. GSL with CMake build support,by ampl.
  13. 在Visual Studio中使用GNU Scientific Library (GSL),by NULL_BOT.