Linux中的autotools工具集
Linux下的Makefile相关工具,更加快速、便捷的生成Makefile文件
aotutools系列工具
- aclocal
- autoscan
- autoconf
- autoheader
- automake
这些工具和相关文件之间的关系:
注意图中的config.in.h文件名是错误的,正确的应该是config.h.in
使用流程
根据上面的那张图我们大致可以知道,这些命令的使用顺序。
这里只需要注意:
configure.in
文件是通过configure.scan
文件改名过来的
Makefile.am
文件是通过自己创建的
各个文件的作用以及如何形成的
configure.scan
文件
使用autoscan命令自动生成configure.scan
文件 它会在给定目录及其子目录树中检查源文件, 若没有给出目录, 就在当前目录及其子目录树中进行检查。它会搜索源文件以寻找一般的移植性问题并创建一个文件”configure.scan”, 该文件就是接下来autoconf要用到的”configure.in”原型。
configure.in
文件
这个文件是configure.scan
通过改名的来,当然其还要咋源文件的基础上进行一些修改。
添加如下内容:
1 |
|
AC_PREREQ宏声明本文要求的autoconf版本, 如本例中的版本 2.65
AC_INIT宏用来定义软件的名称和版本等信息, 在本例中省略了
BUG-REPROT-ADDRESS, 一般为作者的E-mail
AM_INIT_AUTOMAKE是手动添加的, 它是automake所必备的宏, 也同前面一样, PACKAGE是所要产生软件套件的名称,VERSION是版本编号.
AC_CONFIG_SCRDIR宏用来侦测所指定的源码文件是否存在, 来确定源码目录的有效性. 在此处指当前目录下hello.c
AC_CONFIG_FILES宏用于生成相应的Makefile文件.
aclocal.m4
文件
m4是传统Unix的宏处理的安装启动的应用,其对应的是.m4文件,它记录了很多无法理解的宏。
这个文件通过命令aclocal
来生成。
主要作用是:
处理本地的宏定义
Makefile.am
文件
这个文件是用户自己生成的,其内容为:
configure
文件
这个文件是在acloal.m4
和configure.in
两个文件的基础上使用命令autoconf
生成的
主要作用是:
生成了之后直接使用的可执行文件
config.h.in
文件
这个文件通过运行autoheader命令, 生成config.h.in文件. 该工具通常会从acconfig.h
文件中复制用户附加的符号定义. 本例中没有附加的符号定义, 所以不需要创建acconfig.h
文件。
Makefile.in
文件
这个文件通过命令automake
生成,其需要一个前提文件Makefile.am
,这个命令需要用户自己创建、编写。
Makefile
文件
这是最后一步,通过运行./configure
文件直接生成makefile文件。
不同点
使用aotutools工具链自动生成的,Makefile
文件中可以使用一下已经定义好的命令:
make 编译源程序, 键入make, 默认执行”make all”命令
make install 执行该命令, 可以把程序安装到系统目录中
make dist 将程序和相关的文档打包为一个压缩文档以供发布
make clean 清除之前所编译的可执行文件及目标文件
参考资料
https://www.worldhello.net/2010/04/07/954.html
https://www.gnu.org/software/automake/manual/html_node/Autotools-Introduction.html