c/c++開發中使用到的**編譯工具gcc、make、cmake,進化歷程如下。
1) 為什麼需要gcc?
試想,我們寫了乙份c++原始碼檔案main.cpp,該如何讓它變成可執行檔案呢?對,用編譯器將原始碼檔案翻譯成可執行檔案,此時就會用到gcc。
2)為什麼需要make?
實際上,在乙個專案/工程中會包含很多原始碼檔案(注意,標頭檔案一般不會單獨編譯,而是作為原始檔的附屬檔案展開),此時編譯命令就會變得冗長、繁雜,每次編譯都會額外浪費大量的時間和精力,因此就需要乙個自動化工具來幫助我們完成這些工作,make就是這些工具中很傑出的一位。
make:gnu make。通過編寫的makefile指令碼檔案描述整個工程的編譯、鏈結規則,然後一鍵編譯專案。注意,make需要我們提前寫好makefile指令碼,然後make工具根據makefile描述的規則編譯**。假設我們的工程有main.cpp、myfunction.c兩個原始檔,我們只需要寫如下makefile
/* makefile */
然後執行命令
make3)為什麼需要cmake?
由於makefile的語法比較複雜,對於比較大的專案makefile的複雜度也很高,所以當專案的物理結構發生變化時維護makefile也是一項比較困難的工作。為了讓程式設計師從makefile中解脫出來,cmake誕生了。
cmake:跨平台的安裝(編譯)工具。cmake可以用來生成工其他原始碼編譯工具使用的makefile、project等檔案。cmake依賴於規則描述檔案cmakelist.txt,寫好cmakelist.txt後執行cmake命令,即可得到我們需要的makefile,然後執行make命令生成可執行檔案。
已前面的**為例,我們只需要寫如下cmakelist.txt。
cmake_minimum_required(version 3.0)
message($)
message($)
file(glob_recurse files
./main.cpp
./myfunction.c
)
順序執行命令
# first目前,我們經常用到的編譯工具就是cmake和make。先用cmake生成makefile,然後使用make將原始碼檔案(集)編譯為可執行檔案。cmake
# then
make
這兩個工具使用起來非常簡單,只需要順序cmake、make即可,但是cmake需要讀規則描述檔案cmakelist.txt,所以執行命令之前我們需要提供cmakelist.txt檔案。
cmakelist.txt的書寫規則:
初識iptables工具
1 配置防火牆的主要工作就是新增 修改和刪除一些規則 規則 rules 其實就是網路管理員預定義的條件,規則一般的為 如果資料報頭符合這樣的條件,就這樣處理這個資料報 規則儲存在核心空間的資訊 包過濾表中,這些規則分別指定了源位址 目的位址 傳輸協議 如tcp udp icmp 和服務型別 如htt...
初識編譯器
編譯器 閱讀以某一種語言 源語言 編寫的程式,並把該程式翻譯成為乙個等價的 用另一種語言 目標語言 編寫的程式。直譯器 並不通過翻譯的方式生成目標程式,直接利用使用者提供的輸入執行源程式中指定的操作。編譯器直譯器 執行速度更快 錯誤診斷效果更好 建立可執行的目標執行還需要的其他程式,比如 預處理器 ...
裁剪編譯Linux Kernel 初識
參考 最近由於專案需要,需要編譯裁剪符合需求的kernel。大家都知道distribution的版本大都比較龐大,裡面很多東西其實對於自己的機器根本用不到,在嵌入式系統中由於flash與rom的大小有限。顯得裁剪kernel更加有必要。自己編譯核心能在選項裡去除這些多餘的選項,只挑選當前機器適用的硬...