多檔重編譯

  1. 查看 main.c 2.c 3.c 三個程式 include 的標頭檔。如果程式設計人員改變 c.h,檔案 main.c 和 2.c 不需要重新編譯; 3.c 需要被重新編譯。如果 b.h 被改變,程式設計人員忘了重新編譯 2.c,最後的程式可能不會正確運作。
    [dywang@dyw219 make1]$ grep ^# main.c 
    #include <stdlib.h>
    #include "a.h"
    [dywang@dyw219 make1]$ grep ^# 2.c 
    #include <stdio.h>
    #include "a.h"
    #include "b.h"
    [dywang@dyw219 make1]$ grep ^# 3.c 
    #include "b.h"
    #include "c.h"
    
  2. 變更 2.c 檔,輸出 2222 後換行。
    [dywang@dyw219 make1]$ vim 2.c 
    [dywang@dyw219 make1]$ grep 2222 2.c
    printf("2222\n");
    
  3. 要讓 main 可執行,必須先重新編譯 2.o,再重新產可執行檔 main。
    [dywang@dyw219 make1]$ gcc -c 2.c
    [dywang@dyw219 make1]$ gcc -o main main.o 2.o 3.o
    
  4. 執行 main,輸出 2222 後換行。
    [dywang@dyw219 make1]$ ./main 
    2222