让Gnu科学图书馆在Cygwin工作

时间:2011-09-06 11:59:11

标签: c cygwin gsl

我正在使用gsl和Cygwin,为了开始,我正在尝试编译一个非常简单的程序(稍后我将从Fortran程序中调用它)。由于找到gsl文件时出现问题,我无法编译。代码是:

#include <gsl/gsl_math.h>

void gslgateway_(double *x, double *res){
   *res = gsl_atanh(*x);
}

当我尝试编译它时:

gcc -c gslgateway.c

我收到以下错误:

gslgateway.c:1:26: error: gsl/gsl_math.h: No such file or directory

如果我将第一行更改为

#include <C:/cygwin/usr/include/gsl/gsl_math.h>

然后找到gsl_math.h,但是其他一些文件不是:

In file included from gslgateway.c:1:
C:/cygwin/usr/include/gsl/gsl_math.h:23:25: error: gsl/gsl_sys.h: No such file or directory
...

所以,问题似乎是库文件的路径。但尽量尝试,我似乎无法正确设置。我按Using GSL with cygwin g++的建议使用了gsl-config,它给了我

-L/usr/include

所以我尝试使用它作为一个选项进行编译,但我得到了相同的结果。我也尝试将LD_LIBRARY_PATH设置为/ usr / lib,/ usr / include,C:/ cygwin / usr / include以及其他几种组合,但没有任何效果。

我不知道现在还有什么可以尝试的。谁能看到我错过的东西?

(其他信息:我安装了gsl-devel。至少,我要求Cygwin安装程序安装它,我可以在许多其他文件中找到包含gsl_math.h的文件夹/ usr / include / gsl。不知道我还有什么需要做的。)

1 个答案:

答案 0 :(得分:1)

由于我的猜测似乎是正确的,我会将其作为答案发布。

看起来你正在使用MinGW编译器。 MinGW不是Cygwin的一部分,所以它不了解Cygwin风格的路径。这就是为什么您的编译器能够找到C:/cygwin/usr/include/而不是/usr/include