原文:https://www.jianshu.com/p/bbffda22fee8
第二章 如何运行configure以及Makefile标准
2.1 configuring
讲解了./configure 命令的用法,列举了典型的命令参数
如 '--prefix=prefix' 用来指定路径
示例:./configure --prefix=/opt/gnu
并不推荐在源代码的路径中运行configure,这样容易混乱,不便于再次配置源代码用于其他系统平台
2.2 cinfigure产生了哪些文件
configure之后主要生成一下几个文件:
config.cache:存放系统检测数据,可被手动修改和删除的纯文本文件
config.log:存放configure中每一步的test操作以及test结果
config.status:可以用来重新产生configuration配置文件
config.h:许多package使用configure的源码是用C或者C++语言写的,config.h中预定义了一些可能会被用到的宏
Makefile:主要目的
附录C:生成文件之间的依赖关系
C.1 aclocal
aclocal生成‘acloca.m4’文件,定义了文件‘configure.in’所需要的各种宏,包含了已有库中的宏、用户自定义宏以及‘acinclude.m4’文件中的内容
aclocal关系图
C.2 autoheader
autoheader在‘configure.in’的基础场运行‘aclocal.m4’文件,同时,当autoconf运行时,需要‘acconding.h’头文件,从而生成‘confi.h.in’
autoheaderg
C.3 automake and libtoolize
automake and libtoolize
C.4 autoconf
autoconf产生configure脚本
C.5 configure
前面四个命令都是为了生成运行configure所需的文件,
configure
C.6 make
make产生目标文件
make
从网上看到一个关系图,比较清楚:
Autotools调用流程
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'.
$@和$<分别是目标文件和第一个依赖关系