configure
configure腳本為了讓一個程序能夠在各種不同類型的機器上運行而設(shè)計的济瓢。在使用make編譯源代碼之前,configure會根據(jù)自己所依賴的庫而在目標機器上進行匹配玷或。
約定俗成的,所有的configure腳本都把腳本文件名起為configure
片任,一般來講都是shell腳本偏友,根據(jù)所在的系統(tǒng)環(huán)境生成makefile文件。有時候看到一些程序的configure內(nèi)容超級之多对供,讓人難以看下去位他。
configure腳本運行時掃描當前環(huán)境,生成一個名為config.status
的子腳本犁钟。子腳本將Makefile.in
文件轉(zhuǎn)換為適應(yīng)于當前系統(tǒng)環(huán)境的Makefile
文件棱诱。
GNU build system
這個工具能夠幫助我們生成configure腳本。GNU build system涝动,又叫做Autotools
迈勋。
這個工具查詢當前系統(tǒng)的環(huán)境變量、平臺架構(gòu)醋粟、當前所依賴的庫以及他們的位置靡菇,然后根據(jù)這些信息去make,這樣就能實現(xiàn)同一套代碼僅需configure一下就可以在不同的unix/linux系統(tǒng)中編譯運行米愿。
Autotools包含的命令有autoconf
厦凤,automake
,libtool
育苟。
autoconf
autoconf命令的主要作用是創(chuàng)建configure
较鼓。它基于configure.ac
文件生成configure
文件。
autoscan
autoscan
是autoconf的輔助命令,它創(chuàng)建一個預備的configure(configure.scan
)博烂,作為autoconf命令的輸入香椎。我們可以按需在這個文件上進行添加內(nèi)容,修改之后手工修改名字變成configure.ac
文件禽篱。
autoheader
autoheader
也是autoconf的輔助命令畜伐,用于生成一個configure的模版頭文件config.h.in
。
automake
automake命令的主要作用是創(chuàng)建Makefile
躺率。以Makefile.am
和configure.ac
為輸入玛界,以Makefile.in
為輸出。Makefile.in
在configure執(zhí)行時用于生成Makefile
悼吱。
libtool
libtool命令的主要作用是創(chuàng)建和使用可移植的共享(動態(tài)鏈接)庫慎框。
其他相關(guān)命令
ifnames
命令可以列出程序中的預處理標示符,比如#if
,#ifdef
等舆绎。
m4
處理文件中的宏鲤脏。
pkg-config
查詢已安裝庫的接口。
configure 標準文件流
下面的命令和文件流清晰的描述了從configure到make的整個過程吕朵。