第二章 如何運行configure以及Makefile標準
2.1 configuring
講解了./configure 命令的用法,列舉了典型的命令參數(shù)
如 '--prefix=prefix' 用來指定路徑
示例:./configure --prefix=/opt/gnu
并不推薦在源代碼的路徑中運行configure,這樣容易混亂扶欣,不便于再次配置源代碼用于其他系統(tǒng)平臺
2.2 cinfigure產(chǎn)生了哪些文件
configure之后主要生成一下幾個文件:
config.cache:存放系統(tǒng)檢測數(shù)據(jù)劣砍,可被手動修改和刪除的純文本文件
config.log:存放configure中每一步的test操作以及test結(jié)果
config.status:可以用來重新產(chǎn)生configuration配置文件
config.h:許多package使用configure的源碼是用C或者C++語言寫的宇立,config.h中預定義了一些可能會被用到的宏
Makefile:主要目的
附錄C:生成文件之間的依賴關(guān)系
C.1 aclocal
aclocal生成‘a(chǎn)cloca.m4’文件黔帕,定義了文件‘configure.in’所需要的各種宏确憨,包含了已有庫中的宏鄙信、用戶自定義宏以及‘a(chǎn)cinclude.m4’文件中的內(nèi)容
C.2 autoheader
autoheader在‘configure.in’的基礎場運行‘a(chǎn)clocal.m4’文件瞪醋,同時,當autoconf運行時装诡,需要‘a(chǎn)cconding.h’頭文件银受,從而生成‘confi.h.in’
C.3 automake and libtoolize
C.4 autoconf
C.5 configure
前面四個命令都是為了生成運行configure所需的文件,
C.6 make
make產(chǎn)生目標文件
從網(wǎng)上看到一個關(guān)系圖鸦采,比較清楚:
2.3 最常用的Makefile命令
make all
make check
make install
make clean
第三章 Makefile語法簡介
all: foo
foo: foo.o bar.o baz.o
.c.o:
<tab> $(CC) $(CFLAGS) -c $< -o $@@
.l.c:
<tab> $(LEX) $< && mv lex.yy.c $@@
target1: dep1 dep2 ... depN
<tab> cmd1
<tab> cmd2
<tab> ...
<tab> cmdN
target2: dep4 dep5
<tab> cmd1
<tab> cmd2
dep4 dep5:
<tab> cmd1
默認宏變量
The default value for $(CC) is 'cc'.
$@和$<分別是目標文件和第一個依賴關(guān)系