日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

GNU Make 簡介

Make 程序最初設(shè)計是為了維護C 程序文件防止不必要的重新編譯 。在使用命令行編譯器的時候,修改了一個工程中的頭文件,如何確保包含這個頭文件的所有文件都得到編譯?現(xiàn)在10 機的版本生成是使用批處理程序,編譯那些文件依賴于程序的維護者,在模塊之間相互引用頭文件的情況下,要將所有需要重新編譯的文件找出來是一件痛苦的事情;在找到這些文件之后,修改批處理進行編譯 。實際上這些工作可以讓make 程序來自動完成,make 工具對于維護一些具有相互依賴關(guān)系的文件特別有用,它對文件和命令的聯(lián)系(在文件改變時調(diào)用來更新其它文件的程序)提供一套編碼方法 。Make 工具的基本概念類似于Proglog語言,你告訴make 需要做什么,提供一些規(guī)則,make 來完成剩下的工作 。

1 簡介

make 工作自動確定工程的哪部分需要重新編譯,執(zhí)行命令去編譯它們 。雖然make多用于C 程序,然而只要提供命令行的編譯器,你可以將其用于任何語言 。實際上,make 工具的應(yīng)用范圍不僅于編程,你可以描述任和一些文件改變需要自動更新另一些文件的任務(wù)來使用它 。

1.1 準備工作

如果要使用make,你必須寫一個叫做“makefile”的文件,這個文件描述工程中文件之間的關(guān)系,提供更新每個文件的命令 。典型的工程是這樣的:可執(zhí)行文件靠目標文件來更新,目標文件靠編譯源文件來更新 。

Makefile 寫好之后,每次更改了源文件后,只要執(zhí)行make 就足夠了,所有必要的重新編譯將執(zhí)行 。Make 程序利用makefile 中的數(shù)據(jù)庫和文件的最后修改時間來確定那個文件需要更新;對于需要更新的文件,make 執(zhí)行數(shù)據(jù)庫中記錄的命令 ??梢蕴峁┟钚袇?shù)給make 來控制那個文件需要重新編譯 。

1.2 Makefile 介紹

Makefile 文件告訴make 做什么,多數(shù)情況是怎樣編譯和鏈接一個程序 。這里有一個簡單的makefile,描述如何編譯鏈接由8 個C 文件和3 個頭文件組成的一個編輯器:

-----------------------------------------------------------------------------
edit : main.o kbd.o command.o display.o insert.o serach.o files.o utils.o
cc -o edit main.o kbd.o command.o display.o insert.o search.o files.o utils.o

main.o : main.c defs.h
cc -c main.c

kdb.o : kbd.c defs.h command.h
cc -c kbd.c

command.o : command.c defs.h command.h
cc -c command.c

display.o : display.c defs.h buffer.h
cc -c display.c

insert.o : insert.c defs.h buffer.h
cc -c insert.c

search.o : search.c defs.h buffer.h
cc -c search.c

files.o : files.c defs.h buffer.h command.h
cc -c files.c

utils.o : utils.c defs.h
cc -c utils.c

clean :
rm edit main.o kbd.o command.o display.o insert.o search.o files.o utils.o
----------------------------------------------------------------------------

將長行用分開便于閱讀,這和使用一個長行的作用是一樣的 。使用這個makefile 創(chuàng)建可執(zhí)行文件“edit”時運行make 就可以了;如果要將可執(zhí)行文件和目標文件刪除,執(zhí)行make clean

make 重新編譯這個編輯器時,每個更改的C 文件必須重新編譯;如果頭文件更改了,每個包含頭文件的C 文件必須重新編譯;每次編譯產(chǎn)生一個對應(yīng)于原文件的目標文件 。最終,目標文件鏈接在一起產(chǎn)生新的可執(zhí)行文件 。

1.3 規(guī)則簡介

makefile 中的規(guī)則是這樣的:

TARGET... : DEPENDENCIES ...
COMMAND
...

目標(TARGET)程序產(chǎn)生的文件,如可執(zhí)行文件和目標文件;目標也可以是要執(zhí)行的動作,如“clean” 。

依賴(DEPENDENCIES)是用來產(chǎn)生目標的輸入文件,一個目標通常依賴于多個文件 。

推薦閱讀