Linux下gcc/g++、make和cmake的區別

文本程序到可執行文件生成無論在什麼平臺大致分爲以下幾個部分:
  1.用編輯器編寫源代碼,如.c文件。
  2.用編譯器編譯代碼生成目標文件,如.o。
  3.用鏈接器連接目標代碼生成可執行文件,如.exe。
  Linux平臺下,.o文件一般是通過編譯的但還未鏈接的目標文件,.out文件一般都是經過相應的鏈接產生的可執行文件(linux下)。當然這是一般情況下人們這麼設置,而真正的,在linux中 .o通常保存的是可執行代碼 ,至於可執行文件則沒有規定擴展名,用的是文件屬性位來決定的是否可執行。在chmod中設置。
  我們知道編譯和鏈接階段是靠g++和gcc編輯器來完成,這兩個編譯階段是相同的,但是鏈接階段g++默認鏈接c++庫,所以一般情況下用gcc編譯c文件,而g++編譯cpp文件。當然g++也可以編譯c文件,而gcc編譯cpp文件則需要在後面加上參數-lstdc++,作用就是鏈接c++庫。
  但是如果編譯和鏈接的階段如果源文件太多,一個一個編譯時就會特別麻煩,於是人們想到,爲什麼不設計一種類似批處理的程序,來批處理編譯源文件呢,於是就有了make工具,它是一個自動化編譯工具,你可以使用一條命令實現完全編譯。但是你需要編寫一個規則文件,make依據它來批處理編譯,這個文件就是makefile,所以編寫makefile文件也是一個程序員所必備的技能。
  對於一個大工程,編寫makefile實在是件複雜的事,於是人們又想,爲什麼不設計一個工具,讀入所有源文件之後,自動生成makefile呢,於是就出現了cmake工具,它能夠輸出各種各樣的makefile或者project文件,從而幫助程序員減輕負擔。但是隨之而來也就是編寫cmakelist文件,它是cmake所依據的規則。所以在編程的世界裏沒有捷徑可走,還是要腳踏實地的。
  原文件—cmakelist —cmake —makefile —make —生成可執行文件(make中則包含了多條鏈接以及gcc/g++編譯語句)。
  參考自下面博文:http://blog.csdn.net/FX677588/article/details/53159019
發佈了29 篇原創文章 · 獲贊 28 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章