91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mingw和cygwin區別

發布時間:2020-08-06 05:26:12 來源:網絡 閱讀:616 作者:清風徐來918 欄目:系統運維


minGW與cygwin

==========================

首先MingW和cygwin都可以用來跨平臺開發。  

MinGW是Minimalistic GNU for Windows的縮寫,也就是Win版的 精簡的GCC 。  

MinGW 收集了一系列免費的Windows 使用的頭文件和庫文件;同時整合了GNU( http://www.gnu.org/ )的工具集,特別是GNU 程序開發工具,如經典gcc, g++, make等。

Microsoft的有一套unix的子系統的開發環境,不過只是一個posix子集,linux的許多函數不能用,當然fork沒問題。


Cygwin則是 全面模擬 了Linux的接口,提供給運行在它上面的的程序使用,并提供了大量現成的軟件,更像是一個平臺。  

相對的MingW也有一個叫MSYS(Minimal system)的子項目,主要是提供了一個模擬Linux的Shell和一些基本的Linux工具。因為編譯一個大型程序,光靠一個GCC是不夠的,還需要有Autoconf等工具來配置項目,所以一般在Windows下編譯Linux下的大型項目都是通過MSYS來完成的,當然MSYS只是一個輔助環境,根本的工作還是MingW來做的。



用MingW和cygwin編譯出來的程序的區別

===================================  

首先,MingW和cygwin都不能讓Linux下的程序直接運行在Windows上,必需通過源代碼重新編譯。  

現代操作系統包括Windows和Linux的基本設計概念像進程線程地址空間虛擬內存這些都是大同小異的,之所以二者上的程序不能兼容,主要是它們對這些功能具體實現上的差異,

首先是可執行文件的格式,Window使用PE的格式,并且要求以.EXE為后綴名。Linux則使用ELF。

其次,操作系統的API也不一樣,如Windows用CreateProcess()創建進程,而Linux使用fork()。


所以要移植程序必然要在這些地方進行改變,


MinGW的方案:

來把代碼中Linux下的系統調用API直接 替換 修改成對應的Windows下的API。所以生成的執行文件已經 看不到linux的系統調用api 。


Cygwin方案:

Cygwin通過 cygwin1.dll 這個動態庫 實現兩個平臺API的轉換 。Cygwin生成的程序依然有fork()這樣的Linux系統調用API, 只不過在cygwin1.dll實現到Windows功能的轉換。

 

用Mingw編譯的程序性能會高一點,而且也不用帶著那個接近兩兆的cygwin1.dll文件。


【綜上所述】

1.修改編譯器,讓window下的編譯器把諸如fork的調用翻譯成等價的形式--這就是mingw的做法.

2.修改庫,讓window提供一個類似unix提供的庫,他們對程序的接口如同unix一樣,而這些庫,當然是由win32的API實現的--這就是cygwin的做法.


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

淮安市| 延安市| 彭山县| 习水县| 辽宁省| 广德县| 靖宇县| 资中县| 东阳市| 隆林| 扶沟县| 绍兴市| 定西市| 山东省| 安塞县| 泗阳县| 巨鹿县| 尤溪县| 新龙县| 永宁县| 平顺县| 辉南县| 肇州县| 宁津县| 北票市| 洛扎县| 沙坪坝区| 平塘县| 高密市| 九寨沟县| 岳阳县| 溆浦县| 内黄县| 迁安市| 聂拉木县| 万宁市| 昆山市| 达拉特旗| 扎囊县| 台前县| 军事|