yml檔案tab 空格 c語言makefile檔案

2021-10-14 08:54:06 字數 2905 閱讀 4881

@[toc] 在軟體的工程中的原始檔是很多的,其按照型別、功能、模組分別放在若干個目錄和檔案中,哪些檔案需要編譯,那些檔案需要後編譯,那些檔案需要重新編譯,甚至進行更複雜的功能操作,這就有了我們的系統編譯的工具。

在linux和unix中,有乙個強大的實用程式,叫make,可以用它來管理多模組程式的編譯和鏈結,直至生成可執行檔案。

make程式需要乙個編譯規則說明檔案,稱為makefile,makefile檔案中描述了整個軟體工程的編譯規則和各個檔案之間的依賴關係。

makefile就像是乙個shell指令碼一樣,其中可以執行作業系統的命令,它帶來的好處就是我們能夠實現「自動化編譯」,一旦寫好,只要乙個make命令,整個軟體功能就完全自動編譯,提高了軟體開發的效率。

make是乙個命令工具,是乙個解釋makefile中指令的命令工具,一般來說大多數編譯器都有這個命令,使用make可以是重新編譯的次數達到最小化。

makefile檔案的規則可以非常複雜,比c程式還要複雜,我通過示例來介紹它的簡單用法。

檔名:makefile,內容如下:

all:book1 book46 

book1:book1.c

gcc -o book1 book1.c

book46:book46.c _public.h _public.c

gcc -o book46 book46.c _public.c

clean:

rm -f book1 book46

第一行

all:book book46
all: 這是固定的寫法。

book1 book46表示需要編譯目標程式的清單,中間用空格分隔開,如果清單很長,可以用換行。

第二行

makefile檔案中的空行就像c程式中的空行一樣,只是為了書寫整潔,沒有什麼意義。

第三行

book1:book1.c
book1:表示需要編譯的目標程式。

如果要編譯目標程式book1,需要依賴源程式book1.c,當book1.c的內容發生了變化,執行make的時候就會重新編譯book1。

第四行

gcc -o book1 book1.c
這是乙個編譯命令,和在作業系統命令列輸入的命令一樣,但是要注意乙個問題,在gcc之前要用tab鍵,看上去像8個空格,實際不是,一定要用tab,空格不行。

第六行

book46:book46.c _public.h _public.c
與第三行的含義相同。

book46:表示編譯的目標程式。

如果要編譯目標程式book46,需要依賴源程式book46.c、_public.h和_public.c三個檔案,只要任何乙個的內容發生了變化,執行make的時候就會重新編譯book46。

第七行

gcc -o book46 book46.c _public.c
與第四行的含義相同。

第九行

clean:
清除目標檔案,清除的命令由第十行之後的指令碼來執行。

第十行

rm  -f  book1 book46
清除目標檔案的指令碼命令,注意了,rm之前也是乙個tab鍵,不是空格。

makefile準備好了,在命令提示符下執行make就可以編譯makefile中all引數指定的目標檔案。

程式make編譯目標程式。

再執行一次make。

因為全部的目標程式都是最新的,所以提示沒有目標可以編譯。

執行make clean,執行清除目標檔案的指令。

再執行make重新編譯。

修改_public.c程式,隨便改點什麼,只要改了就行。

然後再make

注意了,因為book46依賴的源程式之一_public.c改變了,所以book46重新編譯。

book1沒有重新編譯,因為book1依賴的原始檔並沒有改變。

makefile中,變數就是乙個名字,變數的值就是乙個文字字串。在makefile中的目標,依賴,命令或其他地方引用變數時,變數會被它的值替代。

我通過示例來介紹它的簡單用法。

cc=gcc

flag=-g

all:book1 book46

book1:book1.c

$(cc) $(flag) -o book1 book1.c

book46:book46.c _public.h _public.c

$(cc) $(flag) -o book46 book46.c _public.c

clean:

rm -f book1 book46

第一行

cc=gcc
定義變數cc,賦值gcc。

第二行

flag=-g
定義變數flag,賦值-g。

第七行

$(cc)  $(flag) -o book1 book1.c
$(cc)和$(flag)就是使用變數cc和flag的值,類似於c語言的巨集定義,替換後的結果是:

在makefile檔案中,使用變數的好處有兩個:1)如果在很多編譯指令採用了變數,只要修改變數的值,就相當於修改全部的編譯指令;2)把比較長的、公共的編譯指令採用變數來表示,可以讓makefile更簡潔。

yml檔案tab 空格 YAML檔案格式語法

yaml基礎 學習k8s就不得不學習下yaml語法了 yaml是一種簡潔的非標記語言,yaml以資料為中心,使用空白,縮排,分行組織資料,從而使得表示更加簡潔易讀。yaml語法規則 大小寫敏感 使用縮排表示層級關係 縮排時不允許使用tab鍵,只允許使用空格 縮排的空格數目不重要,只要相同層級的元素左...

將檔案中的tab轉換為space空格

在之前的一篇文章中提到了在vim中將tab符轉換為空格的方法,其實,和處理檔案中的 m的方法類似,在linux中還有其它的方法可以將檔案中的tab和space相互轉換。使用sed sed i s t g filename,其中 i是在命令列中輸入來鍵入的,此方法將所有tab替換為4個空格。在vi中使...

關於linux各檔案因為tab或者空格導

2.在make menuconfig的時候,指定交叉編譯器或者根目錄的路徑時 例 home 使用者 fl2440 rootfs 例 home 使用者 fl2440 rootfs 即使產生了.config檔案,但是make之後在 home 使用者 fl2440 rootfs 此目錄中沒有出現相應的檔案...