所以我用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
中设置工具链时,不要按取消而不是确定答案 0 :(得分:1)
您看到的错误是由于MinGW默认情况下没有链接Cygwin DLL。
MinGW-和Cygwin编译的库彼此不能很好地发挥作用 - 虽然它是possible to get it to work,但这并不是一个好主意。
为您的项目选择一个工具链,在这种情况下,意味着设置Code :: Blocks,以便它使用Cygwin工具链代替捆绑的MinGW分发或者使用MinGW编译GSL
答案 1 :(得分:0)
您可以在Cygwin中使用以下选项:
./configure CC=i686-w64-mingw32-gcc
然后你可以在CodeBlocks中使用GSL。