2011-09-06 38 views
1

我正在使用gsl和Cygwin,并开始我正在尝试编译一个非常简单的程序(我将稍后从Fortran程序中调用)。由于定位gsl文件的问题,我无法编译它。该代码是:让Gnu科学图书馆在Cygwin工作

#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 
... 

所以,问题似乎是库文件的路径。但尽可能地尝试,我似乎无法正确设置。我用GSL-配置作为Using GSL with cygwin g++建议,这让我

-L/usr/include 

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

我不知道还有什么可以尝试的。任何人都可以看到我失踪的东西吗? (其他信息:我已经安装了gsl-devel,至少我要求Cygwin Installer安装它,并且我可以在许多其他文件中找到包含gsl_math.h的文件夹/ usr/include/gsl。不知道我还有什么需要做的。)

+0

你使用什么编译器?如果你使用MinGW,它不会知道如何解释Cygwin风格的路径。 –

+0

这可能解释它。我今天只安装了Cygwin,但已经有了MinGW。重新启动Cygwin后,事情似乎正在起作用。我检查了'gcc -v',目标是'i686-pc-cygwin'。 (当我在Windows命令行中检查它时,它是'i686-w64-mingw')感谢您的解释! –

回答

1

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

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