1

我正在使用 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 安装程序安装它,我可以找到一个文件夹 /usr/include/gsl 包含 gsl_math.h 以及许多其他文件。我不知道如果还有什么我需要在那里做的。)

4

1 回答 1

1

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

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

于 2011-09-06T17:32:21.560 回答