MinGW & Cygwin

來源:互聯網
上載者:User

標籤:

  MinGW和Cygwin都解決了C++跨平台交叉編譯的問題,使Linux下的程式在Windows上編譯運行成為可能。

  MinGW給習慣在Linux上開發的人員在windows上提供了一套類似的工具集;Cygwin主要是對於在Linux的程式,無需改動代碼即可移植到windows上;gnuwin32主要是對習慣linux工具的人員,在windows上提供一套類似的命令。

  Unix下編譯通過的C代碼,在win32下編譯是不能通過的 ,當然Unix和win32的API都符合標準C,即大多數函數調用在unix和win32下是相同的.但unix有自己一些獨特的API(如fork,spawn,signals,select,sockets等),如果代碼中使用了這些API,在win32下當然找不到對應的庫。但這些API的功能在win32中也能實現,下面提供兩種讓window編譯Unix風格代碼的方法:

  • 修改編譯器,讓window下的編譯器把諸如fork的調用翻譯成等價的形式,這就是MinGW的做法
  • 修改庫,讓window提供一個類似unix提供的庫,它們對程式的介面如同unix一樣,而這些庫是由win32的API實現的,這就是Cygwin的做法

MinGW

  MinGW, a contraction of "Minimalist GNU for Windows", is a minimalist development environment for native Microsoft Windows applications.

  MinGW provides a complete Open Source programming tool set which is suitable for the development of native MS-Windows applications, and which do not depend on any 3rd-party C-Runtime DLLs.

  MinGW給在習慣在Linux開發的人員提供了一套在Windows上開發類似Linux的工具集,它包括一系列軟體:編譯工具、連結工具、轉儲工具、調試工具和其它開發工具等。MinGW還提供一些開源的基礎支援庫,像GNU的C/C++ RT庫(libc、libstdc++),POSIX的基本調用介面(包括pthread),甚至還有OpenGL和Windows API的調用介面等。幾乎所有MinGW中的軟體都是從GNU項目或Linux下移植到Windows下的。

  與GNU不同的是,MinGW編譯產生的是Windows下的可執行檔(.exe)或庫檔案(.dll,.lib),不過編譯過程中的的中間檔案仍然是.o檔案,而不是.obj檔案。

  MinGW的POSIX介面遠沒有Cygwin實現的那麼全面(如:連BSD/Linux Socket都沒有,只能用Winsock),所以MinGW只是用來開發Windows專屬應用的工具集。

  後來MinGW有了一個子項目叫:MSYS,其中包括了更多的Linux工具,其目標類似Cygwin:構建一套Windows下的Linux類比環境。

  MSYS, a contraction of "Minimal SYStem", is a Bourne Shell command line interpreter system. Offered as an alternative to Microsoft‘s cmd.exe, this provides a general purpose command line environment, which is particularly suited to use with MinGW, for porting of many Open Source applications to the MS-Windows platform; a light-weight fork of Cygwin-1.3, it includes a small selection of Unix tools, chosen to facilitate that objective.

  註:MinGW官網:http://www.mingw.org/

Cygwin

  Cygwin is:

  • a large collection of GNU and Open Source tools which provide functionality similar to a Linux distributionon Windows.
  • a DLL (cygwin1.dll) which provides substantial POSIX API functionality.

  Cygwin 名字來源於GNU、Cygnus、Windows三者的縮寫。Cygwin的目標是:構建一套Windows下的Linux類比環境。因此,Cygwin是一個龐大的項目,不只包括Linux下的開發環境,也包括工作環境和各種各樣的Linux下的軟體。

  在早期,Cygwin的核心是cygwin1.dll,可以認為它是一個POSIX介面的實現,依靠這個動態連結程式庫,Unix/Linux下的軟體可以很容易的移植到Windows下,並且風格保持原有的不變。不過,隨著Cygwin的發展,越來越多的Unix/Linux程式的移植,建立基於Cygwin的複雜程式依賴的庫也越來越多,現在裝完預設配置的Cygwin後,就會發現有很多cyg打頭的動態連結程式庫。

註:

  Cygwin官網:http://www.cygwin.com/

  Cygwin中文網:http://www.cygwin.cn/

GnuWin32

  GnuWin32使windows使用者可以在命令列視窗中使用各種各樣的linux命令,就跟使用普通的windows命令一樣簡單。

  註:GnuWin32官網:http://gnuwin32.sourceforge.net/

 

 

MinGW & Cygwin

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.