手动再将 configure.scan 文件重命名为 configure.in 文件:

    mv configure.scan configure.in

    重命名 编辑 configure.in - 图1

    上面执行过程演示图

    我们在上一步生成的 configure.in 文件内容为:

    #                                               -*- 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])
    
    # 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

    在 autoscan 生成的 configure.scan 文件中,AC_ 前缀是 Autoconf 宏(Autoconf Macros)的标准命名约定,具有特定含义:

    1. AC_ 前缀的含义
      Autoconf 宏​​:AC_ 开头的宏是 Autoconf 提供的​​内置宏​​,用于检测系统特性、设置编译环境或生成配置脚本。
      例如:AC_PROG_CC(检查 C 编译器)、AC_CHECK_HEADERS(检查头文件)等。
      标准化:AC_ 前缀是 Autoconf 的保留命名空间,避免与用户自定义宏冲突。
    2. 其他常见前缀​​
      AM_:Automake 宏(用于 Makefile 规则,如 AM_INIT_AUTOMAKE)。
      ​​AX_:Autoconf 扩展宏(来自第三方工具或用户自定义宏)。
      ​​LT_​​:Libtool 宏(用于库编译,如 LT_INIT)。
    3. 为什么需要这些前缀?​​
      ​​明确来源​​:通过前缀区分宏的来源(Autoconf/Automake/自定义)。
      ​​避免冲突​​:防止用户定义的宏与内置宏重名。
      ​​维护兼容性​​:确保不同版本的 Autoconf 行为一致。

    为了方便说明,下面我用 vi 打开该文件,并通过 :set number 命令显示了行号,在需要修改的位置使用红色先进行了标记:

    重命名 编辑 configure.in - 图2

    针对上面红色标记的位置进行修改:

    • 第5行红线上面的内容修改为测试文件名 main.c ,也就是自己的源文件名;
      AC_INIT(main.c)
    • 在第5行和第6行之间插入:
      //源文件名, 该源文件的版本号
      AM_INIT_AUTOMAKE(main.c, 1.0)
    • 注释掉原来红色标记的第6行和第7行;
    • 在第20行指定输出的文件名: Makefile
      AC_OUTPUT(Makefile)

    修改之后的内容如下:

    #                                               -*- Autoconf -*-
    # Process this file with autoconf to produce a configure script.
    
    AC_PREREQ([2.69])
    AC_INIT(main.c)
    AM_INIT_AUTOMAKE(main.c, 1.0)
    #AC_CONFIG_SRCDIR([main.c])
    #AC_CONFIG_HEADERS([config.h])
    
    # 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(Makefile)