3 回答

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超10個(gè)贊
為簡(jiǎn)化起見,它是這樣的:
在Cygwin中編譯某些內(nèi)容,您正在為Cygwin進(jìn)行編譯。
在MinGW中編譯某些內(nèi)容,您正在針對(duì)Windows進(jìn)行編譯。
關(guān)于西格溫
Cygwin的目的是通過模擬POSIX標(biāo)準(zhǔn)記錄的基于Unix的操作系統(tǒng)提供的許多小細(xì)節(jié),使基于Unix的應(yīng)用程序到Windows的移植更加容易。您的應(yīng)用程序可以使用Unix功能,例如管道,Unix風(fēng)格的文件和目錄訪問等,并且可以使用Cygwin進(jìn)行編譯,它將作為您應(yīng)用程序周圍的兼容層,因此許多特定于Unix的范例可以繼續(xù)使用。
分發(fā)軟件時(shí),收件人將需要與Cygwin運(yùn)行時(shí)環(huán)境(由file提供cygwin1.dll
)一起運(yùn)行。您可以將其與軟件一起分發(fā),但是您的軟件必須符合其開放源代碼許可。甚至可能甚至只是鏈接您的軟件,但單獨(dú)分發(fā)dll仍可能需要您遵守開放源代碼許可證。
關(guān)于MinGW
MinGW的目標(biāo)只是成為GNU編譯器工具(例如GCC,Make,Bash等)的Windows端口。它不嘗試模擬Unix或提供與Unix的全面兼容性,而是提供了在Windows上使用GCC(GNU編譯器)和少量其他工具的最低必需環(huán)境。。它沒有像Cygwin這樣的Unix仿真層,但是結(jié)果是需要對(duì)您的應(yīng)用程序進(jìn)行特定的編程,使其能夠在Windows上運(yùn)行,這可能意味著要進(jìn)行重大更改,如果它被創(chuàng)建為依賴于在標(biāo)準(zhǔn)Unix環(huán)境中運(yùn)行,并且使用Unix特定的功能,例如前面提到的功能。默認(rèn)情況下,在MinGW的GCC中編譯的代碼將編譯為Windows X86本機(jī)目標(biāo),包括.exe和.dll文件,盡管您也可以使用正確的設(shè)置進(jìn)行交叉編譯,因?yàn)槟旧鲜窃谑褂肎NU編譯器工具套件。
MinGW本質(zhì)上是Microsoft Visual C ++編譯器及其關(guān)聯(lián)的鏈接/生成工具的替代方案。在某些情況下,可能會(huì)使用MinGW使用正確的庫(kù)來編譯旨在用于Microsoft Visual C ++編譯的內(nèi)容,在某些情況下可能會(huì)進(jìn)行其他修改。
MinGW包括一些用于與Windows操作系統(tǒng)進(jìn)行交互的基本標(biāo)準(zhǔn)庫(kù),但是與GNU編譯器集合中包含的普通標(biāo)準(zhǔn)庫(kù)一樣,這些不對(duì)您創(chuàng)建的軟件施加許可限制。
對(duì)于非平凡的軟件應(yīng)用程序,除非使用全面的跨平臺(tái)框架,否則使其成為跨平臺(tái)的應(yīng)用可能是一個(gè)巨大的挑戰(zhàn)。在我撰寫本文時(shí),Qt框架是為此目的最受歡迎的框架之一,它允許構(gòu)建可在包括Windows在內(nèi)的各種操作系統(tǒng)上運(yùn)行的圖形應(yīng)用程序,但是還有其他選擇。如果從一開始就使用這樣的框架,則不僅可以減輕移植到另一個(gè)平臺(tái)時(shí)的麻煩,而且如果您正在編寫一個(gè)框架,則可以在所有平臺(tái)上使用相同的圖形小部件-窗口,菜單和控件。 GUI應(yīng)用程序,并使它們對(duì)用戶而言是本機(jī)的。

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超6個(gè)贊
Cygwin試圖在Windows上創(chuàng)建完整的UNIX / POSIX環(huán)境。為此,它使用各種DLL。雖然這些DLL包含在GPLv3 +中,但它們的許可證包含一個(gè)例外,該例外不會(huì)強(qiáng)制派生作品被GPLv3 +覆蓋。MinGW是C / C ++編譯器套件,可讓您創(chuàng)建Windows可執(zhí)行文件而無需依賴此類DLL-您只需要普通的MSVC運(yùn)行時(shí),這是任何普通的Microsoft Windows安裝的一部分。
您還可以獲得一個(gè)類似于UNIX / POSIX的小型環(huán)境,該環(huán)境是使用MinGW編譯的,名為MSYS。它不具有Cygwin的所有功能,但是對(duì)于希望使用MinGW的程序員來說是理想的選擇。
- 3 回答
- 0 關(guān)注
- 1207 瀏覽
添加回答
舉報(bào)