1. 程式人生 > >Linux下gcc/g++、make和cmake的區別

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.sina.com.cn/s/blog_74a459380102uxlz.html

---------------------  作者:無鞋童鞋  來源:CSDN  原文:https://blog.csdn.net/FX677588/article/details/53159019  版權宣告:本文為博主原創文章,轉載請附上博文連結!