【GNU】《GNU Autoconf》基础----未消化

原文: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'.
$@和$<分别是目标文件和第一个依赖关系

posted on 2022-10-04 01:25  bdy  阅读(84)  评论(0编辑  收藏  举报

导航