资料


autotools.pdf

一个完整项目的编译流程流程


编译环境构建,输入的文件

autogen.sh

  1. #!/bin/sh
  2. autoreconf --install

在如下流程中:
image.png

  • 在以上流程中configure.ac因为直接作为输入,所以不需要autoscan的流程
  • 其他的流程会一次被autoreconf —install所触发

configure.ac

  • 在configure.ac中完成一系列编译环境的构建及确认

    • 基本设置:版本 编译语言 帮助脚本构建目录
    • automake相关
      • 基本的全局编译参数定义
      • 静默模式关闭
    • libtool相关
      • lib库的一些编译属性的设置
    • 编译环境构建
      • m4宏的引入
      • AX_XXX autoconf自己的编译宏引入方式
      • pkg conf的宏
        • _CFLAGS _LIBS
          • 通过m4文件安装引入相关的宏定义
    • 一些宏的代码引入
      • AC_CONFIG_HEADERS([config.h])
    • 编译目录中autoconf输出的makefile文件目录给定
      1. AC_CONFIG_FILES(
      2. Makefile
      3. libyangmodelsdk/Makefile
      4. yang/Makefile
      5. )
      【 总结 】
      configure.ac 通过宏讲编译需要的一些库引入编译环境中,Nakefile.am是给予这些宏完成编译选项定制及依赖的

      Makefile.am

  • 通过前面所注入的一些列宏,构建属于自己所需要的编译变量

  • 将编译变量挂在在automake的编译框架中
  • 编译框架的构建
    • lib库的编译框架

image.png

  • 可执行文件的编译框架

image.png

  • 配置文件

image.png

  • 脚本

image.png

  • 自己定制

image.png
【 总结 】

  • Makefile 是直接驱动编译器完成编译工作的,所有的宏是之前configure.ac中根据实际需求完成定制的,./configure 过程中Makefile.am被转化成Makefile。
  • Makefile.am中通过一些宏的导引,跟automake的框架完成交互,最终有构建出可以满足要求的makefile