最近接觸到許多linux項目,其編譯都是使用的autotools。 autotools是一個自動化的編譯工具。我的理解它的最主要功能就是生成Makefile。 由於直接寫Makefiel,其依賴關係仍是比較複雜的。 通常的咱們下載的源碼包只要經過如下3條命令,就可完成編譯和安裝: ./configure make sudo make install 可是autotools其原本仍是很是複雜的,下面給出參考 如下是命令列表: autoscan 掃描給定的目錄及其子目錄,以搜尋普通的可移植性問題,好比檢查編譯器,庫,頭文件等。 生成的configure.scan是configure.ac文件的原型。 aclocal 是一個收集宏的過程。 將已經安裝的宏、用戶定義宏和acinclude.m4文件中的宏集中定義到文件aclocal.m4中。 autoheader 生成宏定義的模板文件config.h.in。 宏定義模板文件被後面的命令所須要。 automake 根據configure.ac和Makefile.am中定義的結構,生成Makefile.in文件。 libtoolize 若是在configure.ac中定義了一些特殊的宏,好比AC_PROG_LIBTOO,automake將會調用此命令。 autoconf 生成configure腳本文件。 make distclean 清除全部生成的文件 ./configure 生成Makefile。 make 編譯。 make install 把程序安裝到系統目錄中去。 make uninstall 卸載程序。 make clean 清除生成的目標文件及過程當中產生的文件。 make distclean 清除全部產生的文件。 make dist 將程序和相關的文檔打包爲一個.tar.gz壓縮文件以供發佈。 autoupdate 若是更新了Autoconf工具的版本,此命令可更新configure.in。 autoreconfig 若是更新了Autoconf工具的版本,此命令可更新產生的配置文件。 ifname 掃描C源程序文件,在標準輸出上輸出那些出如今#if,#elif,#ifdef或#ifndef中的標識符, 每一個標識符顯示爲一行,其後跟一空格和所屬的文件名。 command input output -------------------------------------------------- autoscan [source] configure.scan autoscan.log aclocal configure.ac aclocal.m4 autoheader aclocal.m4 autoconfig.h.in automake configure.ac INSTALL makefile.am Makefile.in COPYING install-sh missing mkinstalldirs stamp-h.in libtoolize config.guess config.sub ltmain.sh ltconfig autoconf configure.ac configure aclocal.m4 autoconfig.h.in command input output ----------------------------------------------------------------- configure configure Makefile Makefile.in config.h cofnig.h.in config.log XXXXX.pc.in config.status XXXXX-uninstalled.pc.in libtool XXXXX.pc XXXXX-uninstalled.pc stamp-h1 make Makefile make install Makefile make uninstall Makefile make clean Makefile make distclean Makefile make dist Makefile