C++科学计算库GSL在Windows下的配置

一、GSL介绍

GNU科学计算函数库GSL(GNU Scientific Library)是一个强大的C/C++数值计算函数库,它是一个自由软件,是GNU项目软件的一个部分,遵循GPL协议。GSL是一个为C和C++程序员提供的科学数值运算库。该科学计算库异常强大,函数库提供了大量的数值计算程序,如随机函数、特殊函数和拟合函数等等,整个函数库大约有1000多个函数,几乎涵盖了科学计算的各个方面。提供了如下方面的支持:

Complex Numbers          Roots of Polynomials           Special Functions

Vectors and Matrices        Permutations                  Sorting

BLAS Support             Linear Algebra                 Eigensystems

Fast Fourier Transforms      Quadrature                    Random Numbers

Quasi-Random Sequences    Random Distributions           Statistics

Histograms                N-Tuples                     Monte Carlo Integration

Simulated Annealing        Differential Equations           Interpolation

Numerical Differentiation    Chebyshev Approximation       Series Acceleration

Discrete Hankel Transforms   Root-Finding                 Minimization

Least-Squares Fitting        Physical Constants             IEEE Floating-Point

Discrete Wavelet Transforms                              Basis splines

 

该函数库的主页是: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:
 http://gnuwin32.sourceforge.net/packages/gsl.htm
(2)安装gsl,安装后在安装目录下将有如下目录:
\contrib\gsl-1.8 一些说明文件
\bin 二进制文件
     libgsl.dll             gsl的动态链接库(基于gcc的正式版本)
     libgsl_d.dll           gsl的动态链接库(基于gcc的调试版本)
     libgslcblas.dll        cblas的动态链接库(基于gcc的正式版本)
     libgslcblas_d.dll      cblas的动态链接库(基于gcc的调试版本)
     gsl-histogram.exe      用于计算数据直方图的程序
     gsl-randist.exe        用于生成服从指定分布数据的程序
\lib 库文件
     libgsl.a                gsl的静态链接库(基于gcc的正式版本)
     libgsl_d.a              gsl的静态链接库(基于gcc的调试版本)
     libgslcblas.a           cblas的静态链接库(基于gcc的正式版本)
     libgslcblas_d.a         cblas的静态链接库(基于gcc的调试版本)
     libgsl_dll.a            libgsl.dll的gcc输入库
     libgsl_d_dll.a          libgsl_d.dll的gcc输入库
     libgslcblas_dll.a       libgslcblas.dll的gcc输入库
     libgslcblas_d_dll.a     libgslcblas_d.dll的gcc输入库
     libgsl.def              输出libgsl.dll的定义
     libgslcblas.def         输出libgslcblas.dll的定义
\doc 有关文档
\info
\man1
\man3
     各种格式的gsl帮助文件
\include\gsl 头文件
     gsl include files
     其中使用到的主要有bin,lib,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等,加入多个可以用空格隔开。
 二、打开VC,tools-options-directories,将解压目录下的lib,gsl分别加入到库文件和头文件的搜索路径中,将WinGsl.dll和WinGslD.dll复制到~\Microsoft Visual Studio\VC98\Bin下。在新建的工程中将你所使用到的库文件加入到object/library modules。

或者:

当生成lib文件,发现安装目录lib下并没有libgsl.lib,libgslcblas.lib这两个文件,倒是有两个扩展名为def和a(linux下库文件包格式)的文件,因此必须进行转换。开始菜单,点击运行,输入cmd。进入gsl库的lib目录下依次输入以下两条语句:
    lib /machine:i386 /def:libgsl.def
    lib /machine:i386 /def:libgslcblas.def

再看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)
{
    double x = 5.0;
    double y = gsl_sf_bessel_J0(x);
    printf ("J0(%g) = %.18en", x, y);
    return 0;
}


原文地址:http://blog.sina.com.cn/s/blog_5fe506110100ky6q.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值