2010年12月30日 星期四

Makefile 常見phoney target



make all
產生我們設定的目標,即此範例中的執行檔。只打 make 也可以,此時會開始編譯原始碼,然後連結,並且產生執行檔。
make clean
清除之前所編譯的執行檔及目的檔 (object file, *.o)
make distclean
除了清除執行檔和目的檔外,也把 configure 所產生的 Makefile也清除掉。
make install
將程式安裝至系統中。如果原始碼編譯無誤,且執行結果正確,便可以把程式安裝至系統預設的執行檔存放路徑。如果我們用bin_PROGRAMS 巨集的話,程式會被安裝至 /usr/local/bin 這個目錄。
make dist
將程式和相關的檔案包裝成一個壓縮檔以供散播 (distribution) 。執行完在目錄下會產生一個以 PACKAGE-VERSION.tar.gz 為名稱的檔案。PACKAGE VERSION 這兩個變數是根據 configure.in 檔中
AM_INIT_AUTOMAKE(PACKAGE, VERSION) 的定義。在此範例中會產生'hello-1.0.tar.gz' 的檔案。
make distcheck
make dist 類似,但是加入檢查包裝後的壓縮檔是否正常。這個目標除了把程式和相關檔案包裝成 tar.gz 檔外,還會自動把這個壓縮檔解開,執行 configure,並且進行 make all 的動作,確認編譯無誤後,會顯示這個 tar.gz 檔已經準備好可供散播了。這個檢查非常有用,檢查過關的套件,基本上可以給任何一個具備 GNU 發展環境的人去重新編譯。就 hello-1.tar.gz 這個範例而言,除了在 RedHat Linux 上,在 FreeBSD 2.2.x 版也可以正確地重新編譯。

How to repair and clone disk with ddrescue

  ddrescue  is a tool that can be used to repair and clone disks on a  Linux system . This includes hard drives, partitions, DVD discs, flas...