轉載自:
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