GSL库的编译和使用
一、Windows下的编译过程
1、下载GSL库:http: //www.gnu.org/software/gsl/
GSL - GNU Scientific Library - GNU Project - Free Software Foundation
当前的最新版本为2.7.1,解压之后文档结构如下,
2、下载msys工具(msys是minGW开源项目开发的一款在windows下模拟Unix命令窗口的工具,这样便于我们在命令行中使用mingw来快速编译程序。):
https: //sourceforge.net/projects/mingwbuilds/files/external-binary-packages/
3、解压msys工具
在解压之后的目录中创建一个mingw文件夹,
4、配置msys,目的是为了采用Qt的MinGW编译器。打开./etc文件夹下的fstab文件,根据自己QT的环境,添加如下语句,然后保存。
这句话的意思就是环境配置,当启动msys时,将Qt5的mingw编译直接挂载到mingw目录下。
5、双击msys.bat,在弹出的命令行输入命令切换到GSL目录下,。
6、编译GSL
然后执行./configure命令,生成编译所需的makefile文件
然后执行:make –j8命令
开始启动编译,
然后执行命令:make install
7、执行完make install命令后,整个GSL的编译就完成了,开发所需的头文件、库文件会复制到../msys/local目录下的bin、lib和include三个文件夹下,
8、在QT中测试
创建Qt的控制台项目,
main.cpp文件内容如下,
#include <QCoreApplication>
#include <gsl/gsl_sf_bessel.h>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
double x = 10.0;
double y = gsl_sf_bessel_J0(x);
qDebug()<<"J0("<<x<<")="<<y;
return a.exec();
}
在.pro文件中指明GSL头文件和库文件所在的路径,
#指明GSL库所对应的头文件所在的路径
INCLUDEPATH += D:\SoftwareApplication\msys\local\include
#指明依赖库及其所在的路径
LIBS += D:\SoftwareApplication\msys\local\lib\libgsl.a
LIBS += D:\SoftwareApplication\msys\local\lib\libgslcblas.a
编译运行,结果如下,
二、Linux下的编译过程
1、切换到GSL解压之后的路径下,执行命令:./configure,目的是生成编译所需的Makefile文件,
这一步可以指定编译之后文件的存放路径,如果不指定,则安装在默认路径:/usr/local,不需要配置环境变量。
2、执行:make指令
3、编译完成之后安装,执行命令:sudo make install命令
4、安装完成之后,检查以下结果,检查/usr/local/bin目录,
带gsl前缀的文件就是刚刚编译成功的,
然后再切换到/usr/local/lib目录下,
文件名中带gsl的表示与GSL相关的库文件。
再切换到/usr/local/include目录,
多了一个gsl文件夹,进入./gsl文件夹,可以看到有很多与GSL相关的头文件,
5、测试
创建gsl_test.cpp测试文件,
#include <stdio.h>
#include <gsl/gsl_matrix.h>
int main (void)
{
int i, j;
gsl_matrix * m = gsl_matrix_alloc (10, 3);
for (i = 0; i < 10; i++)
for (j = 0; j < 3; j++)
gsl_matrix_set (m, i, j, 0.23 + 100*i + j);
for (i = 0; i < 100; i++)
for (j = 0; j < 3; j++)
printf ("m(%d,%d) = %g\n", i, j,
gsl_matrix_get (m, i, j));
gsl_matrix_free (m);
return 0;
}
创建makefile文件,
IPATH=-I/usr/local/include
LPATH=-L/usr/local/lib
#这里直接链接的静态库文件
gsl_test:gsl_test.cpp
g++ gsl_test.cpp $(IPATH) $(LPATH) -l:libgsl.a -l:libgslcblas.a -o gsl_test
.PHONY:clean
clean:
rm -rf gsl_test
然后开始编译,执行:make命令,将会生成gsl_test的可执行程序,
然后运行程序,方可打印输出。
6、在Qt Creator中测试GSL功能
创建一个控制台应用程序GslTest,然后在main.cpp中输入测试代码,
#include <QCoreApplication>
#include "gsl_sf_bessel.h"
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
double x = 5.0;
double y = gsl_sf_bessel_J0 (x);
qDebug()<<x<<y;
return a.exec();
}
在.pro文件中添加GSL的包含代码
INCLUDEPATH += /usr/local/include
INCLUDEPATH += /usr/local/include/gsl
LIBS += /usr/local/lib/libgsl.a
LIBS += /usr/local/lib/libgslcblas.a
编译运行,结果如下,
参考博客:
[1]、https://blog.csdn.net/xiaop5140/article/details/76712413
[2]、https://blog.csdn.net/qq_39779233/article/details/108630697
[3]、https://blog.csdn.net/dengm155/article/details/53819929