我正在使用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。不知道我还有什么需要做的。)
答案 0 :(得分:1)
由于我的猜测似乎是正确的,我会将其作为答案发布。
看起来你正在使用MinGW编译器。 MinGW不是Cygwin的一部分,所以它不了解Cygwin风格的路径。这就是为什么您的编译器能够找到C:/cygwin/usr/include/
而不是/usr/include
。