亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Cygwin和MinGW有什么區別?

Cygwin和MinGW有什么區別?

胡說叔叔 2019-09-27 16:22:20
我想使我的C ++項目跨平臺,并且正在考慮使用Cygwin / MinGW。但是它們之間有什么區別?另一個問題是,是否可以在沒有Cygwin / MinGW的系統上運行二進制文件?
查看完整描述

3 回答

?
守候你守候我

TA貢獻1802條經驗 獲得超10個贊

為簡化起見,它是這樣的:

  • 在Cygwin中編譯某些內容,您正在為Cygwin進行編譯。

  • 在MinGW中編譯某些內容,您正在針對Windows進行編譯。

關于西格溫

Cygwin的目的是通過模擬POSIX標準記錄的基于Unix的操作系統提供的許多小細節,使基于Unix的應用程序到Windows的移植更加容易。您的應用程序可以使用Unix功能,例如管道,Unix風格的文件和目錄訪問等,并且可以使用Cygwin進行編譯,它將作為您應用程序周圍的兼容層,因此許多特定于Unix的范例可以繼續使用。

分發軟件時,收件人將需要與Cygwin運行時環境(由file提供cygwin1.dll)一起運行。您可以將其與軟件一起分發,但是您的軟件必須符合其開放源代碼許可。甚至可能甚至只是鏈接您的軟件,但單獨分發dll仍可能需要您遵守開放源代碼許可證。

關于MinGW

MinGW的目標只是成為GNU編譯器工具(例如GCC,Make,Bash等)的Windows端口。它不嘗試模擬Unix或提供與Unix的全面兼容性,而是提供了在Windows上使用GCC(GNU編譯器)和少量其他工具的最低必需環境。。它沒有像Cygwin這樣的Unix仿真層,但是結果是需要對您的應用程序進行特定的編程,使其能夠在Windows上運行,這可能意味著要進行重大更改,如果它被創建為依賴于在標準Unix環境中運行,并且使用Unix特定的功能,例如前面提到的功能。默認情況下,在MinGW的GCC中編譯的代碼將編譯為Windows X86本機目標,包括.exe和.dll文件,盡管您也可以使用正確的設置進行交叉編譯,因為您基本上是在使用GNU編譯器工具套件。

MinGW本質上是Microsoft Visual C ++編譯器及其關聯的鏈接/生成工具的替代方案。在某些情況下,可能會使用MinGW使用正確的庫來編譯旨在用于Microsoft Visual C ++編譯的內容,在某些情況下可能會進行其他修改。

MinGW包括一些用于與Windows操作系統進行交互的基本標準庫,但是與GNU編譯器集合中包含的普通標準庫一樣,這些不對您創建的軟件施加許可限制。

對于非平凡的軟件應用程序,除非使用全面的跨平臺框架,否則使其成為跨平臺的應用可能是一個巨大的挑戰。在我撰寫本文時,Qt框架是為此目的最受歡迎的框架之一,它允許構建可在包括Windows在內的各種操作系統上運行的圖形應用程序,但是還有其他選擇。如果從一開始就使用這樣的框架,則不僅可以減輕移植到另一個平臺時的麻煩,而且如果您正在編寫一個框架,則可以在所有平臺上使用相同的圖形小部件-窗口,菜單和控件。 GUI應用程序,并使它們對用戶而言是本機的。


查看完整回答
反對 回復 2019-09-27
?
達令說

TA貢獻1821條經驗 獲得超6個贊

Cygwin試圖在Windows上創建完整的UNIX / POSIX環境。為此,它使用各種DLL。雖然這些DLL包含在GPLv3 +中,但它們的許可證包含一個例外,該例外不會強制派生作品被GPLv3 +覆蓋。MinGW是C / C ++編譯器套件,可讓您創建Windows可執行文件而無需依賴此類DLL-您只需要普通的MSVC運行時,這是任何普通的Microsoft Windows安裝的一部分。

您還可以獲得一個類似于UNIX / POSIX的小型環境,該環境是使用MinGW編譯的,名為MSYS。它不具有Cygwin的所有功能,但是對于希望使用MinGW的程序員來說是理想的選擇。


查看完整回答
反對 回復 2019-09-27
  • 3 回答
  • 0 關注
  • 1253 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號