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


  轉載自:

     https://blog.csdn.net/fx677588/article/details/53159019

 

文本程序到可執行文件生成無論在什么平台大致分為以下幾個部分: 
  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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM