2010-12-22 105 views
1

我一直在使用C++的套接字庫。其他一些信息:32位Linux,Codelite和GCC工具集。我希望能夠使用Codelite的Windows版本編譯我的Windows程序。我一直使用的套接字庫沒有庫的mingw32版本,但它是開源的。那麼我怎樣才能讓套接字庫的mingw32版本生成,這樣我就可以使用提供的源代碼創建一個windows版本?爲mingw編譯linux庫

回答

0

您將其移植到新平臺。 :)

你很幸運,它是開源的,因爲那樣幾乎不可能移植它(你必須支付$$$才能獲得特定許可證的代碼副本,或者重寫整個產品)。

享受。

或者,他們可能已經有一個端口...檢查您正在使用的庫的文檔。

+0

我檢查了圖書館的文檔和他們沒有任何的mingw32。那麼,我該如何「移植」圖書館,我需要採取哪些步驟? – TheFuzz 2010-12-22 02:35:55

0

首先你需要確保你沒有包含任何Linux特定的庫。

1

大多數開源的linux庫都是用make build系統構建的(雖然其他的像jam等,還有自定義的編寫腳本)。 MinGW附帶make實用程序,它是mingw32-make.exe。有可能(如果你幸運的話)簡單地在Windows上重建庫。

更常見的情況是,您需要先配置項目,然後才能構建它。 Windows Shell不支持配置所需的腳本要求,但MinGW項目的另一部分叫做MSYS。如果您安裝了msys和所需的所有工具,則可以在運行make之前配置您的項目。

當然,以上只適用於庫被編寫爲便攜式。 Linux套接字實現(sys/socket.h)和Windows實現(winsock2.h)之間存在一些突破性差異。您可能被迫編輯代碼塊以確保它的平臺版本正確(或者所需的任何依賴關係也是爲Windows構建的)。

此外,該庫可能已經爲Windows構建,但使用不同的編譯器(如生成.lib和.dll文件的MSVC)。 Mingw需要用於庫的.a文件,但一個聰明的特性是能夠直接與.dll鏈接,而不需要導入庫,所以你可以經常使用一個不是針對Mingw構建的現有Windows庫(儘管這贏得了對靜態鏈接沒有幫助)。還有一個工具,dlltool,它可以將.lib轉換爲.a。

如果您提供關於您正在使用的特定庫的詳細信息,我可能會爲您挑選在Win上運行它需要做的事情。