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
2
3
4
5
#AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS])
AC_INIT(hello,1.0)
AM_INIT_AUTOMAKE(hello,1.0)
AC_CONFIG_SRCDIR([hello.c])
AC_CONFIG_HEADERS([config.h])

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.m4configure.in两个文件的基础上使用命令autoconf生成的

主要作用是:
生成了之后直接使用的可执行文件

config.h.in文件

这个文件通过运行autoheader命令, 生成config.h.in文件. 该工具通常会从acconfig.h文件中复制用户附加的符号定义. 本例中没有附加的符号定义, 所以不需要创建acconfig.h文件。

Makefile.in文件

这个文件通过命令automake生成,其需要一个前提文件Makefile.am,这个命令需要用户自己创建、编写。

Makefile文件

这是最后一步,通过运行./configure文件直接生成makefile文件。

不同点

使用aotutools工具链自动生成的,Makefile文件中可以使用一下已经定义好的命令:

  1. make 编译源程序, 键入make, 默认执行”make all”命令

  2. make install 执行该命令, 可以把程序安装到系统目录中

  3. make dist 将程序和相关的文档打包为一个压缩文档以供发布

  4. make clean 清除之前所编译的可执行文件及目标文件

参考资料

https://www.worldhello.net/2010/04/07/954.html

https://www.gnu.org/software/automake/manual/html_node/Autotools-Introduction.html

https://www.lrde.epita.fr/~adl/dl/autotools.pdf


Linux中的autotools工具集
https://ysc2.github.io/ysc2.github.io/2023/12/05/Linux中的autotools工具集/
作者
Ysc
发布于
2023年12月5日
许可协议