linux 編譯C語言程式萬能makefile檔案

2021-10-11 19:06:06 字數 964 閱讀 8291

一般單個檔案使用 gcc 來進行編譯,但是如果檔案多啦,想一次編譯完成怎辦呢?

一種解決方案是使用makefile檔案,下面給出乙個萬能的檔案格式:

makefile

source = $(wildcard *.c)

targets = $(patsubst %.c, %,$(source))

cc =gcc

cflags = -wall -g

all:$(targets)

$(targets):%:%.c

$(cc) $< $(cflags) -o $@

.phony:clean all

clean:

-rm -rf $(targets)

通過上述檔案和.c檔案一起存放在乙個資料夾下,使用make命令即可生成可執行檔案。使用make clean可以刪除可執行檔案。

上述**解釋:

wildcard 表示萬用字元,尋找到.c檔案,也就是我們編寫多c語言源**。

patsubst 表示模式字串替換,具體作用為目標檔名稱為與c語言原始檔同名的檔案。

cc和cfalgs表示gcc命令和引數。gcc -wall -g    輸出警告和除錯資訊

$@ 表示目標檔案    $< 第乙個依賴檔案 (其他指令可以參考其他博文)

.phony 這個比較有意思,表示偽目標,確保當存在clean檔案的時候,也會執行這一句。

執行檔案的時候,多半是要使用./a.out這種格式。但是cd ls這些命令為什麼就不需要./標記呢?其實是path 路徑的問題,我們自己寫的程式沒有被path包含,所以需要./來制定當前路徑,如果不想輸入./的話。使用下面多命令輸入到當前teiminal

path=$path:.

表示當前shell的path已經包含了當前路徑,就不再需要輸入./這個符號啦。值得注意的是:此路徑僅僅對當前shell有效哦。

又可以愉快的編寫程式玩耍啦。

C語言小筆記 萬能排序

include include include typedef struct stustu 函式功能 排序 萬能排序 形參列表 void base 資料起始位置 size t nmemb 資料的個數 size t size 每個元素的位元組大小 int compare const void cons...

c語言實現萬能求導

原理 如下圖,若要求曲線在a點的導數,則選取另一點b,求ab的斜率,b越靠近a,則斜率越接近要求的導數值 因此,可以設計原型如下 design a prototype double derivative point p,double accuracy 以下我給出乙份自寫的sample code,已經...

C 萬能標頭檔案

萬能標頭檔案其實就一行 include其實它包括了 基本包括了大部分的stl庫函式,使用方便快捷 include include include include include include include 向量 include 佇列 include include include include...