Linux 用make進行巨集編譯

2021-09-23 07:35:26 字數 1285 閱讀 2412

假設現在有main.chaha.csin_value.ccos_value.c這4個檔案。若是想要編譯出乙個可執行檔案,則要經歷如下步驟

gcc -c main.cgcc - haha.cgcc -c sin value.cgcc -c cos value.cgcc -o main main.o haha.o sin value.o cos value.o -lm -l/usr/lib -l/lib

可以看出編譯的過程十分的繁瑣,而且如果要重新編譯,則上面的步驟都得重新來一次。

那麼使用make工具就能完美解決這個問題。那麼要使用make就得先配置makefile

以上面的例子為例:

main: main.o haha.o sin value.o cos value.o

gcc -o main main.o haha.o sin value.o cos value.o -lm

編寫makefile檔案之後,只需要在makefile目錄下執行make命令即可。

make的優點:

makefile檔案的基本規則如下:

target: targetfile1 targetfile2

gcc -o excutablefile targetfile2 targetfile2

那個target就是我們想要建立的資訊,而目標檔案(targetfile)就是具有相關性的object file。命令列必須要以tab按鍵作為開頭才行。

還可以在makefile檔案中新增clean操作。

main: main.o haha.o sin value.o cos value.o

gcc -o main main.o haha.o sin value.o cos value.o -lm

clean: rm -f main main.o haha.o cos value.o sin value.o

只需要執行make clean就可以直接清除掉編譯產生的所有目標檔案和可執行檔案。

在Linux下用make指令編譯進度條程式。

首先建立乙個新的檔案,touch progress bar.c 執行該vim progress bar.c命令,寫進度條的程式。寫進乙個進度條程式 include include include void progress printf n int main 如圖 該 中需要注意的小細節 1.con...

Makefile中用巨集定義進行條件編譯

在源 裡面如果這樣是定義的 ifdef macroname 可選 endif 那在makefile裡面 gcc d macroname macrodef 或者 gcc d macroname 這樣就定義了預處理巨集,編譯的時候可選 就會被編譯進去了。對於gcc編譯器,有如下選項 d macro st...

用do while進行複雜的巨集定義

在很多比較複雜的巨集定義中,經常可以看到整個介面被一層do while 0 給包了起來 define foo x dowhile 0 這樣定義的是乙個非復合語句,可以確保在類似下面這種情況 if foo x else 可以順利展開,展開後的結果被do while包了起來 if do while 0 ...