文章目錄
他們五個的區別呢??
1.GCC
- 全稱是GNU Compiler Collection,是一個編譯套件。
- 可通過gcc/g++來編譯目標項目。
- 項目結構複雜時,通過gcc/g++命令直接編譯會出現非常多不便之處,於是出現了Makefile。
2.Makefile
- 一個包含一堆有條理的gcc/g++編譯命令的文件
- Makefile是需要開發者自己手寫的。
- 那之前可以通過在終端輸入gcc/g++命令來編譯項目,現在有了Makefile,又要怎麼用呢?
這就講到Make工具了。
3.Make
- Make工具就是“讀取”並執行Makefile文件中的編譯指令,從而進行項目編譯。
4.CMakelists
- 手寫Makefile就是一件非常恐怖的事情了,你需要在不同的目錄底下寫不同的Makefile,這可能有非常多個。
- 就有CMakelists了。
- CMakelists可以通過更簡單的寫法來生成對應的Makefile文件。
怎麼生成呢?就是寫好CMakelists.txt之後,通過CMake工具生成。
5.CMake
- 類似Make工具的功能,CMake工具就是“讀取”並執行CMakelists.txt中的語句,來生成對應的Makefile
- 然後就可通過Make工具來“執行”Makefile
MinGW和cygwin
1. windows與Linux操作系統的不同
- 在基本設計概念上,進程、線程、尋址、內存管理等方面都是大同小異的,但二者之間的程序不兼容,因爲二者在系統功能上是不同的,提供的系統API也是不同的。
- 可執行文件的格式,Windows採用的是PE的格式,要求以.exe爲後綴名,而Linux使用的是 elf 的格式;
- 操作系統提供的系統API是不同的,如Windows使用CreateProcess()創建進程,而Linux使用fork()。
- 想在Windows環境下使用Linux的編譯工具,也就是gcc/g++,我們需要一箇中間的轉換工具或者平臺,這也就是MinGW和cygwin存在的原因。
1. 什麼是 MinGW
- Minimalistic GNU for Windows,
- 可看做是win版本下的GCC。
- Mingw有一個Msys的子項目,可以提供一些模擬Linux的shell和基本的Linux工具,Msys是一個輔助環境。
- MinGw 有專門的Win32 API的頭文件,來把代碼中Linux方式的系統調用替換爲對應的Windows下的調用方式,某種程度上可以稱之爲將Linux調用 翻譯爲 Windows調用。
2 cygwin
- Windows上運行的unix模擬環境,是cygnus solutions開發的自由軟件
- Cygwin更像一個平臺,模擬了Linux的接口,提供了運行在它上面的程序使用,提供了很多Linux環境下的GNU軟件
- Cygwin 通過Cygwin1.dll的文件實現操作系統API的轉換,模擬了Linux的調用接口給程序,程序以Linux的方式調用系統API,但這個API的目標庫是Cygwin1.dll,Cygwin1.dll再調用Windows對用的方式實現,再把結果返回給程序。