Linux下C編程基礎(chǔ)之:實(shí)驗(yàn)內(nèi)容
3.7.3編寫包含多文件的makefile
1.實(shí)驗(yàn)目的
通過對包含多文件的makefile的編寫,熟悉各種形式的makefile,并且進(jìn)一步加深對makefile中用戶自定義變量、自動變量及預(yù)定義變量的理解。
2.實(shí)驗(yàn)過程
(1)用vi在同一目錄下編輯兩個簡單的hello程序,如下所示:
#hello.c
#includehello.h
intmain()
{
printf(Helloeveryone!n);
}
#hello.h
#includestdio.h>
(2)仍在同一目錄下用vi編輯makefile,且不使用變量替換,用一個目標(biāo)體實(shí)現(xiàn)(即直接將hello.c和hello.h編譯成hello目標(biāo)體)。然后用make驗(yàn)證所編寫的makefile是否正確。
(3)將上述makefile使用變量替換實(shí)現(xiàn)。同樣用make驗(yàn)證所編寫的makefile是否正確。
(4)編輯另一個makefile,取名為makefile1,不使用變量替換,但用兩個目標(biāo)體實(shí)現(xiàn)(也就是首先將hello.c和hello.h編譯為hello.o,再將hello.o編譯為hello),再用make的“-f”選項(xiàng)驗(yàn)證這個makefile1的正確性。
(5)將上述makefile1使用變量替換實(shí)現(xiàn)。
3.實(shí)驗(yàn)步驟
(1)用vi打開上述兩個代碼文件“hello.c”和“hello.h”。
(2)在shell命令行中用gcc嘗試編譯,使用命令:“gcchello.c–ohello”,并運(yùn)行hello可執(zhí)行文件查看結(jié)果。
(3)刪除此次編譯的可執(zhí)行文件:rmhello。
(4)用vi編輯makefile,如下所示:
hello:hello.chello.h
gcchello.c-ohello
(5)退出保存,在shell中鍵入:make,查看結(jié)果。
(6)再次用vi打開makefile,用變量進(jìn)行替換,如下所示:
OBJS:=hello.o
CC:=gcc
hello:$(OBJS)
$(CC)$^-o$@
(7)退出保存,在shell中鍵入make,查看結(jié)果。
(8)用vi編輯makefile1,如下所示:
hello:hello.o
gcchello.o-ohello
hello.o:hello.chello.h
gcc-chello.c-ohello.o
(9)退出保存,在shell中鍵入:make-fmakefile1,查看結(jié)果。
(10)再次用vi編輯makefile1,如下所示:
OBJS1:=hello.o
OBJS2:=hello.chello.h
CC:=gcc
hello:$(OBJS1)
$(CC)$^-o$@
$(OBJS1):$(OBJS2)
$(CC)-c$-o$@
在這里請注意區(qū)別“$^”和“$”。
(11)退出保存,在shell中鍵入make-fmakefile1,查看結(jié)果。
4.實(shí)驗(yàn)結(jié)果
各種不同形式的makefile都能正確地完成其功能。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評論