在Windows上使用GSL(编译,链接等)。分步指南

时间:2014-11-03 22:05:11

标签: c windows gcc linker gsl

我需要使用GSL(GNU Scientific Library)编写一些C代码,之前从未使用过库。

我是一名物理学家,而不是计算机科学家,并且在GNU文档中使用了很多术语。

在过去的几个小时里,我对如何在Windows 7机器上使用GSL感到非常困惑。我已经尝试在这个网站和其他网站上阅读了很多问题,但是很多术语都在我脑海中浮现。

通常,当我编写程序时,我会执行以下步骤:

1)打开notepad ++,包含我自己的任何头文件并编写我的代码。

2)通过打开Windows命令提示符并键入:

来编译我的程序

gcc -Wall -std=c99 -o myfile myfile.c

我将gcc设为环境变量,并通过安装适用于Windows的CodeBlocks安装了gcc(但是,我不使用代码块)。

从互联网研究来看,这是我设法使用GSL的目的:

1)从http://gnuwin32.sourceforge.net/packages/gsl.htm

下载了适用于Windows的GSL

2)将它安装在桌面上,这样我的Path就没有空格字符了(我在路径中读取空格可能有问题)。

3)将我的路径环境变量设置为.dll的位置:C:\Users\Rohan\Desktop\GnuWin32\bin;

4)尝试编译GSL示例程序:

#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) = %.18e\n", x, y);
  return 0;
}

5)我按如下方式调用了编译器:

C:\Users\Rohan\Desktop>gcc -Wall -I"C:\Users\Rohan\Desktop\GnuWin32\include" -L"C:\Users\Rohan\Desktop\GnuWin32\lib" -lgslcblas -lgsl -lm -o test test.c

这导致以下错误消息:

C:\Users\Rohan\AppData\Local\Temp\ccW8cO7I.o:test.c:(.text+0x30): undefined reference to `gsl_sf_bessel_J0'
collect2: ld returned 1 exit status

由于没有CS的背景知识,大部分工作都是在很少理解的情况下完成的。

我是否走在正确的轨道上?是否有一个简单的一步一步指南,我可以遵循非技术语言来使这个工作?

任何帮助将不胜感激, 谢谢!

1 个答案:

答案 0 :(得分:6)

您需要将test.c放在库之前。应在命令行中使用符号后指定库,因此请更改为:

gcc test.c -Wall -I"C:\Users\Rohan\Desktop\GnuWin32\include" -L"C:\Users\Rohan\Desktop\GnuWin32\lib" -lgslcblas -lgsl -lm -o test

    ^^^^^^  (put this first)