他們五個的區別呢??

他們五個的區別呢??

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對用的方式實現,再把結果返回給程序。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章