1.#Description file for the Make command
2.#Send to print
3.P=und -3 | opr -r2
4.#The source files that are needed by object files
5.FILES= Makefile version.c defs main.c donamc.c misc.c file.c \
6.dosys.c gram.y lex.c gcos.c
7.#The definitions of object files
8.OBJECTS= vesion.o main.o donamc.o misc.o file.o dosys.o gram.o
9.LIBES= -LS
10.LINT= lnit -p
11.CFLAGS= -O
12.Make: $(OBJECTS)
13.cc $(CFLAGS) $(OBJECTS) $(LIBES) -o Make
14.size Make
15.$(OBJECTS): defs
16.gram.o: lex.c
17.cleanup:
18.-rm *.o gram.c
19.install:
20.@size Make /usr/bin/Make
21.cp Make /usr/bin/Make ; rm Make
22.#print recently changed files
23.print: $(FILES)
24.pr $? | $P
25.touch print
26.test:
27.Make -dp | grep -v TIME>1zap
28./usr/bin/Make -dp | grep -v TIME>2zap
29.diff 1zap 2zap
30.rm 1zap 2zap
31.lint: dosys.c donamc.c file.c main.c misc.c version.c gram.c
32.$(LINT) dosys.c donamc.c file.c main.c misc.c version.c \
33.gram.c
34.rm gram.c
35.arch:
36.ar uv /sys/source/s2/Make.a $(FILE)
通常在描述文件中應象上面一樣定義要求輸出將要執行的命令。在執行了Make命令之後,輸出結果為:
1.$ Make
2.cc -c version.c
3.cc -c main.c
4.cc -c donamc.c
5.cc -c misc.c
6.cc -c file.c
7.cc -c dosys.c
8.yacc gram.y
9.mv y.tab.c gram.c
10.cc -c gram.c
11.cc version.o main.o donamc.o misc.o file.o dosys.o gram.o \
12.-LS -o Make
13.13188+3348+3044=19580b=046174b
最後的數字信息是執行"@size Make"命令的輸出結果。之所以只有輸出結果而沒有相應的命令行,是因為"@size Make"命令以"@"起始,這個符號禁止打印輸出它
所在的命令行。描述文件中的最後幾條命令行在維護編譯信息方面非常有用。其中"print"命令行的作用是打印輸出在執行過上次"Make print"命令後所有改動過的文件名稱。系統使用一個名為print的0字節文件來確定執行print命令的具體時間,而宏$?則指向那些在print 文件改動過之後進行修改的文件的文件名。如果想要指定執行print命令後,將輸出結果送入某個指定的文件,那麼就可修改P的宏定義:
1.Make print "P= cat>zap"
在Linux中大多數軟件提供的是源代碼,而不是現成的可執行文件,這就要求用戶根據自己系統的實際情況和自身的需要來配置、編譯源程序後,軟件才能使用。只有掌握了Make工具,才能讓我們真正享受到到Linux這個自由軟件世界的帶給我們無窮樂趣。