autoconf使用简例

autoconf


Linux中的configure/make/make install到底在干吗?

  1. ./config

    configure是一个脚本,一般由Autoconf工具生成,用于检测当前系统环境是否满足安装所需条件;

    比如是否支持安装,是否已经安装依赖等。configure脚本最后生成一个Makefile文件

  2. make

make是一个命令,使用第一步的Makefile文件编译源码。

  1. make install

    make install表示运行"目标为install的make命令",即将编译后的结果复制到相应目录中。

使用autoconf过程

  • 使用命令aclocal会生成m4文件(全称是macro,m后面有4个字母),m4是一种宏处理器,它是 POSIX 标准的一部分

  • autoconf,是生成configure文件的,configure是一个脚本,它能设置源程序来适应各种不同的操作系统平台,并且根据不同的系统来产生合适的Makefile,从而可以使你的源代码能在不同的操作系统平台上被编译出来。

  • automake用来生成Makefile.in文件

  • 一般需要 源码 configure.ac Makefile.am

Autotools

autotools用于生成Makefile文件,降低开发难度。Autotools包含以下几个部分

  • autoscan
  • aclocal
  • autoconf
  • autoheader
  • automake

Autotools使用步骤

我使用了一个非常简单的只有helloworld程序来展示Autotools使用步骤。

#include <stdio.h>

int main(){
        printf("Hello world\n");
        return 0;
}
  1. autoscan命令

    第一步需要在项目目录下执行autoscan命令。命令用于扫描工作目录,生成configure.scan文件。注意:configure.scan文件需要重新命令成configure.ac,然后才能继续
    在这里插入图片描述

  2. 编辑configure.ac文件,添加宏定义

    宏定义如下:

    标签说明
    AC_PREREQ声明autoconf要求的版本号
    AC_INIT定义软件名称、版本号、联系方式
    AM_INIT_AUTOMAKE必须要的,参数为软件名称和版本号
    AC_CONFIG_SCRDIR宏用来侦测所指定的源码文件是否存在, 来确定源码目录的有效性
    AC_CONFIG_HEADER宏用于生成config.h文件,以便 autoheader 命令使用
    AC_PROG_CC指定编译器,默认GCC
    AC_CONFIG_FILES生成相应的Makefile文件,不同文件夹下的Makefile通过空格分隔
    AC_OUTPUT用来设定 configure 所要产生的文件,如果是makefile,configure 会把它检查出来的结果带入makefile.in文件产生合适的makefile
    #                                               -*- Autoconf -*-
    # Process this file with autoconf to produce a configure script.
    
    AC_PREREQ([2.69])
    AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS])
    AC_CONFIG_SRCDIR([main.c])
    AC_CONFIG_HEADERS([config.h])
    AM_INIT_AUTOMAKE(1.0)
    AC_CONFIG_FILES([Makefile])
    # Checks for programs.
    AC_PROG_CC
    
    # Checks for libraries.
    
    # Checks for header files.
    
    # Checks for typedefs, structures, and compiler characteristics.
    
    # Checks for library functions.
    
    AC_OUTPUT
    
  3. aclocal命令

    执行aclocal命令,扫描configure.ac文件产生aclocal.m4文件,该文件主要处理本地的宏定义,根据已经安装的宏,用户定义的宏和acinclude.m4文件中的宏configure.ac 文件需要的宏集中定义到文件 aclocal.m4 中
    在这里插入图片描述

  4. autoconf命令

命令将configur.ac文件中的宏展开,生成 configure 脚本
在这里插入图片描述
5. autoheader命令

执行autoheader命令。该命令生成 config.h.in 文件。该命令通常会从 "acconfig.h” 文件中复制用户附加的符号定义。该例子中没有附加的符号定义, 所以不需要创建 "acconfig.h” 文件
在这里插入图片描述
6. 创建Makefile.am文件

Makefile.am是比Makefile更高层次的规则,指定需要生成什么文件,依赖什么文件和安装到什么目录。automake会根据Makefile.am生成Makefile.in

  • bin_PROGRAMS =

    bin_PROGRAMS用于指定要生成的可执行程序文件,可执行文件在安装时需要被安装到系统中,如果不想要安装到系统中,需要用noinst_PROGRAMS来代替

  • xxx_SOURCES =

    xxx_SOURCES表示生成可执行应用程序所用的源文件,这里注意,xxx_是由前面的bin_PROGRAMS指定的,如果前面是生成example,那么这里就是example_SOURCES,其它的类似标识也是一样

  • xxx_CPPFLAGS =

    xxx_CPPFLAGS 这和Makefile文件中一样,表示C语言预处理参数

  • xxx_LDFLAGS =

    xxx_LDFLAGS 连接的时候所需库文件的标识,这个也就是对应一些如-l,-shared等选项

  • noinst_HEADERS =

    这个表示该头文件只是参加可执行文件的编译,而不用安装到安装目录下。如果需要安装到系统中,可以用include_HEADERS来代替

  • INCLUDES =

    INCLUDES 定义链接时所需要的头文件及引用的头文件目录

  • xxx_LDADD =

    xxx_LDADD 定义链接时所需要的库文件

  1. automake --add-missing命令

    automake --add-missing命令生成Makefile.in文件。使用选项 “–add-missing” 可以让 Automake 自动添加一些必需的脚本文件。如果发现一些文件不存在,可以通过手工 touch命令创建。
    在这里插入图片描述

  2. configure命令

./congigure主要把 Makefile.in 变成最终的 Makefile 文件。configure会把一些配置参数配置到Makefile文件里面。

  1. make命令

    执行make命令。make执行后,会生成hello的可执行文件。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值