0

所以我用 Cygwin 从源代码编译了 GSL。一切顺利,我没有收到任何错误。但是当我尝试编译一些简单的代码时,我得到以下错误:

..\..\..\Programme\CodeBlocks\MinGW\lib\libgsl.a(error.o) In function `gsl_error':
\usr\include\gsl\err\error.c|43|undefined reference to `__getreent'
\usr\include\gsl\err\error.c|44|undefined reference to `__getreent'
\usr\include\gsl\err\error.c|45|undefined reference to `__getreent'
..\..\..\Programme\CodeBlocks\MinGW\lib\libgsl.a(stream.o) In function `gsl_stream_printf':
\usr\include\gsl\err\stream.c|37|undefined reference to `__getreent'
..\..\..\Programme\CodeBlocks\MinGW\lib\libgsl.a(stream.o) In function `gsl_set_stream':
\usr\include\gsl\err\stream.c|61|undefined reference to `__getreent'

我链接了 libgsl.a 和 libgscblas.a 库,并且没有抱怨任何其他功能。

供将来参考:当您想在 code::blocks 中设置工具链时,不要按取消而不是确定

4

2 回答 2

2

您看到的错误是由于默认情况下 MinGW 不链接 Cygwin DLL。

MinGW 和 Cygwin 编译的库不能很好地相互配合 - 虽然可以让它工作,但这并不是一个好主意。

为您的项目选择一个工具链,在这种情况下,这意味着设置 Code::Blocks 以便它使用 Cygwin 工具链而不是捆绑的 MinGW 发行版,或者也使用 MinGW 编译 GSL。

于 2012-05-06T16:57:45.280 回答
0

您可以在 Cygwin 中使用以下选项:

./configure CC=i686-w64-mingw32-gcc

然后你可以在 CodeBlocks 中使用 GSL。

于 2015-09-01T06:48:16.823 回答