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

问题描述 投票:0回答:1

我需要使用 GSL(GNU 科学库)编写一些 C 代码,并且以前从未使用过库。

我是一名物理学家,而不是计算机科学家,并且对 GNU 文档中的许多术语感到困惑。

在过去的几个小时里,我对如何在 Windows 7 计算机上使用 GSL 感到非常困惑。我尝试在这个网站以及其他网站上阅读很多问题,但很多行话都让我无法理解。

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

  1. 打开记事本++,包含我自己的任何头文件并编写我的代码。

  2. 通过打开 Windows 命令提示符并键入以下内容来编译我的程序:

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

我将 gcc 设置为环境变量,并通过安装 CodeBlocks for Windows 来安装 gcc(但是,我不使用 codeblocks)。

如何安装GSL:

  1. 从以下位置下载适用于 Windows 的 GSL:http://gnuwin32.sourceforge.net/packages/gsl.htm

  2. 将其安装在桌面上,这样我的路径将没有空格字符(我已经读到路径中的空格可能是一个问题)。

  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 背景,大部分内容都是在缺乏理解的情况下完成的。

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

c windows gcc linker gsl
1个回答
7
投票

您需要将

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)
© www.soinside.com 2019 - 2024. All rights reserved.