一、GSL介绍
GNU科学计算函数库GSL(GNU Scientific Library)是一个强大的C/C++数值计算函数库,它是一个自由软件,是GNU项目软件的一个部分,遵循GPL协议。GSL是一个为C和C++程序员提供的科学数值运算库。该科学计算库异常强大,函数库提供了大量的数值计算程序,如随机函数、特殊函数和拟合函数等等,整个函数库大约有1000多个函数,几乎涵盖了科学计算的各个方面。提供了如下方面的支持:
Complex Numbers
Vectors and Matrices
BLAS Support
Fast Fourier Transforms
Quasi-Random Sequences
Histograms
Simulated Annealing
Numerical Differentiation
Discrete Hankel Transforms
Least-Squares Fitting
Discrete Wavelet Transforms
该函数库的主页是:http://www.gnu.org/software/gsl/gsl.html。不过遗憾的是原始GSL并不支持不支持windows平台,可所幸的是有人做了GSL在windows上的移植工作,详见http://gnuwin32.sourceforge.net/packages/gsl.htm。
二、GSL在windows下的移植
(1)下载gsl-1.8.exe:
(2)安装gsl,安装后在安装目录下将有如下目录:
\contrib\gsl-1.8 一些说明文件
\bin 二进制文件
\lib 库文件
\doc 有关文档
\info
\man1
\man3
\include\gsl 头文件
(3)不同编译环境下的设置
A. DEV-C++
第一种方式:将gsl安装目录下的bin下libgsl.dll,libgslcblas.dll复制到dev-c++安装目录下的bin目录下;lib下libgsl.a,libgslcblas.a复制到dev-c++安装目录下的lib目录下;include下的整个gsl文件夹复制到dev-c++安装目录下的include目录下。打开dev-c++,工具-编译选项-编译器,选上“在连接器命令行加入如下命令”,加入-lgsl -lgslcblas(即在连接时连上libgsl.a,libgslcblas.a,gcc可以自动识别前缀lib和后缀.a);
第二种方式:打开dev-c++,工具-编译选项-目录,分别将gsl安装目录下的lib,include加入到库和头文件的路径中。最后,在编译器选项中,选中“在连接器命令行加入如下命令”,加入-lgsl -lgslcblas,即可以正常使用gsl。
B.Visual C++ 6.0
从http://www6.in.tum.de/~kiss/WinGsl.htm下载WinGsl-Lib-1.4.02.zip,并解压得到扩展名是.lib的库文件。
两种方式:一、将临时目录下bin中的WinGsl.dll和WinGslD.dll复制到~\Microsoft Visual Studio\VC98\Bin下;整个Gsl目录复制到~\Microsoft Visual Studio\VC98\Include下;lib目录下的所有.lib文件全部复制到~\Microsoft Visual Studio\VC98\Lib下。在使用gsl函数时,在新建的工程中,project-settings-link,在object/library modules中加入你用到的库文件,如WinGsl.lib等,加入多个可以用空格隔开。
或者:
当生成lib文件,发现安装目录lib下并没有libgsl.lib,libgslcblas.lib这两个文件,倒是有两个扩展名为def和a(linux下库文件包格式)的文件,因此必须进行转换。开始菜单,点击运行,输入cmd。进入gsl库的lib目录下依次输入以下两条语句:
再看lib目录下,发现有了libgsl.lib,libgslcblas.lib这两个文件。将其复制到x:\VC98\Bin;将\include整个Gsl目录复制到x:\VC98\include下;\lib目录下的所有.lib文件全部复制到x:\VC98\Lib下。
新建工程时,在该项目的project-settings-link,在object/library modules中加入你用到的库文件,如libgsl.lib libgslcblas.lib,用空格隔开。
C.MingW
首先将D:\temp下bin目录中的两个dll动态链接库(libgsl.dll和libgslcblas.dll)复制到 mingw 的 bin 目录中(gcc路径必须在 PATH 中)或者直接复制到 C:\Windows 或者 C:\Windows\system32 中,总之是程序运行的话必须可以找到这两个动态链接库。
再将 D:\temp\include\ 下 gsl 目录完整复制到 mingw 的 include 目录中去,这些全是头文件,开发程序时必须会用到的。然后将 D:\temp\lib 下的 libgsl.a 和 libgslcblas.a 复制到 mingw 的 lib 目录下。
编译命令是:gcc test.c -o text.exe -lgsl
D.Visual C++ 7.0
如前所述,需要先将那两个动态链接库复制到PATH路径中的目录下,然后复制D:\temp\include\ 下 gsl 目录到 Visual C++ 的 Include 目录下,再将 D:\temp\lib 下的 libgsl.lib 和 libgslcblas.lib 复制到 Visual C++ 的 lib 目录下。编译命令是:cl test.c /link libgsl.lib。用IDE时则是需要将这两个lib档加到 link 参数中去即可。
E.Borland C++ Builder
依然同前,需要先将那两个动态链接库复制到PATH路径中的目录下,然后复制D:\temp\include\ 下 gsl 目录到 Borland C++ Builder 的 Include 目录下。
下来的步骤稍有麻烦,进入那两个dll所在目录,用BCB所带的 implib 工具产生2个需要用到的 lib 文件,命令如下:
implib -af libgsl.lib libgsl.dll
implib -af libgslcblas.lib libgslcblas.dll然后将这两个lib文件复制到 BCB 的 lib 目录下即可。D:\teml\lib 下的 libgsl-bcc.lib 和 libgslcblas-bcc.lib 经过我试验在BCB编译中不可用。只能用implib产生的lib档。
编译命令:bcc32 test.c libgsl.lib命令行是如此,如果你用BCB的IDE的话,就更简单了,将这两个lib文件名加到编译参数中就可以了。
最后给个test.c的源码:
#include <stdio .h>
#include <gsl/gsl_sf_bessel.h>
int main (void)
{
}
原文地址:http://blog.sina.com.cn/s/blog_5fe506110100ky6q.html