next up previous contents
Next: 使用者手冊 Up: Makefile 變數 Previous: makefile 變數實例二   Contents

實機練習題

  1. 共同要求:
    1. 在家目錄下建立 zzz 目錄。
    2. 切換工作目錄到 zzz,所有練習皆存在此目錄。
    3. 下載檔案 make1.tar.gz
    4. 解打包壓縮 make1.tar.gz。
    5. 進入 make1 工作目錄。
    6. 每題的執行檔 target 都改成與指定的 makefile 檔名加副檔名 bin,例如:mfv1.bin, mfv2.bin, mfv3.bin ... 。
  2. 承上一章的 makefile mf4,新增 mfv1,所有的 .o 檔設定成變數 OBJS。
  3. 承上題 mfv1,產生 makefile mfv2
    1. 包含原 mfv1 的目標項目。
    2. 增加所有相依性法則,.o 目標項目皆不使用內建法則。
    3. main.o 2.o 3.o 的「相依項目」改用內建變數 $<
  4. 承上題 mfv2,產生 makefile mfv3,要求如下:
    1. 設定編譯器變數 CC = gcc,編譯選項變數 CFLAGS = -W。
  5. 承上題 mfv3,產生 makefile mfv4,要求如下:
    1. 包含原 mfv3 的目標項目。
    2. 使用變數 $@ 產生目標項目 mfv4.bin。
    3. 增加目標項目 remove 移除產生的執行檔及所有 .o 檔,當 .o 檔不存在時忽略錯誤。
  6. 承上題 mfv4 ,產生 makefile mfv5,要求如下:
    1. 增加目標項目 mdir 建立目錄 /tmp/mfv5.mdir.test。
    2. 當要建的目錄存在時忽略錯誤,使用以下命令測試生效:
      make -f mfv5 mdir && echo Yes
      
  7. 承上題 mfv5 ,產生 makefile mfv6,要求如下:
    1. 包含原 mfv5 的目標項目。
    2. 新增目標項目 install
      1. 安裝目錄變數 DYBIN = /tmp/dywang/bin。
      2. 判斷安裝目錄 DYBIN 是否存在?如果不存在,必須先建目錄。
      3. 判斷腳本不輸出到 stdout。
      4. 判斷式的所有命令在同一個 shell,且前一命令成功才執行下一個命令。
      5. 執行檔必須可執行,所有人都不可寫入。


2019-06-16