2012-05-06 27 views
0

所以我编译了源于Cygwin的GSL。一切都很好,我没有得到任何错误。但是,当我尝试编译一些简单的代码,我得到了以下错误:试图使用GNU科学库,但出现奇怪的链接器错误

..\..\..\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库,并且没有抱怨任何其他职能。

以供将来参考:不要按取消而不是确定,当您想设置代码::块工具链

+0

这是一个cygwin在你系统上的安装问题(或者你用来编译的cmd框)。请分享你的编译环境,而不仅仅是错误。这既不是编程问题,也不是gsl的问题。 –

回答

1

你看到的错误是由于这样的事实,MinGW的没有链接在Cygwin DLL默认。

MinGW-和Cygwin编译的库并不能很好地兼容 - 虽然它是possible to get it to work,但这不是一个好主意。

选择一个工具链,为您的项目,其中,在这种情况下,意味着要么设置代码::块,这样它使用Cygwin的工具链,而不是捆绑的MinGW的分布或使用MinGW编译GSL为好。

+0

这个答案是通过明智地使用我的可靠水晶球给你带来的...... – Christoph

+0

我以为我已经尝试过使用Cygwin工具链,但事实证明,它没有保存我的配置,因此它仍然保留为MinGW工具链<_ <。现在就试着用实际上正确的工具链进行试验。 – user1290204

0

您可以使用下列选项中的Cygwin:

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

然后你可以在代码块使用GSL。