2012-05-06 38 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。