cygwin怎么使用 Cygwin和MinGW的區(qū)別與聯(lián)系?
Cygwin和MinGW的區(qū)別與聯(lián)系?1. MinGW的目標(biāo)是讓W(xué)indows用戶能夠使用GNU工具,比如GCC。Cygwin提供了一個完整的類UNIX環(huán)境。Windows用戶不僅可以使用GNU工具,
Cygwin和MinGW的區(qū)別與聯(lián)系?
1. MinGW的目標(biāo)是讓W(xué)indows用戶能夠使用GNU工具,比如GCC。Cygwin提供了一個完整的類UNIX環(huán)境。Windows用戶不僅可以使用GNU工具,而且理論上Linux上的程序只要用cygwin重新編譯就可以在Windows上運(yùn)行。
2. 在性能方面,如果程序只使用C/C標(biāo)準(zhǔn)庫,則可以使用MinGW或cygwin進(jìn)行編譯。如果程序也使用posixapi,則只能用cygwin編譯。
3. 在依賴性方面,MinGW編譯的程序可以直接在windows上運(yùn)行。該程序由cygwin編譯并運(yùn)行,cygwin依賴于cygwin1.dll。Cygwin使用一個DLL來模擬Linux環(huán)境來“欺騙”應(yīng)用程序,就像它在Linux環(huán)境中運(yùn)行一樣;MinGW在編譯時提供必要的代碼從Linux到windows的轉(zhuǎn)換,并使用windows運(yùn)行時庫。在cygwin中編譯的程序需要cygwin.dll為了在windows下運(yùn)行,源代碼可以在linux環(huán)境下重新編譯,也可以在linux下運(yùn)行;在MinGW環(huán)境下編譯的程序只能在windows下運(yùn)行,不能在linux環(huán)境下編譯。
Cygwin與虛擬機(jī)中的Linux有何差別,到底能用來做什么?
Cygwin是一個POSIX兼容層。Linux是內(nèi)核,Linux系統(tǒng)的上層是GNU軟件。這兩種本質(zhì)沒有任何關(guān)系。cygwin的本質(zhì)是提供一個基本的功能接口,使得軟件源代碼可以在windows上編譯和使用,而不需要修改或微小的修改。但實(shí)際上,這個實(shí)現(xiàn)是POSIX本身的設(shè)計目標(biāo)。Windows不支持POSIX,但事實(shí)上微軟已經(jīng)發(fā)布了與POSIX兼容的組件。只是cygwin的兼容層基本上是通過復(fù)制linux軟件來實(shí)現(xiàn)的,所以可以在cygwin上使用linux兼容的軟件源代碼(注意源代碼不是本地運(yùn)行的)。此外,cygwin還將常用軟件直接移植到Linux上,使用經(jīng)驗和操作方法與Linux基本相似。但cygwin絕對不是Linux。他也不是虛擬機(jī)。