zoukankan      html  css  js  c++  java
  • 图解aclocal、autoconf、automake、autoheader、configure

    原文地址:http://hi.baidu.com/yzkuang/blog/item/557e4f24423d8136c9955908.html

    1.autoscan (autoconf): 扫描源代码以搜寻普通的可移植性问题,比如检查编译器,库,头文件等,生成文件configure.scan,它是configure.ac的一个雏形。
    2.aclocal (automake):根据已经安装的宏,用户定义宏和acinclude.m4文件中的宏将configure.ac文件所需要的宏集中定义到文件 aclocal.m4中。aclocal是一个perl 脚本程序,它的定义是:“aclocal - create aclocal.m4 by scanning configure.ac”
    user input files   optional input     process          output files
    ================   ==============     =======          ============
                        acinclude.m4 - - - - -.
                                              V
                                          .-------,
    configure.ac ------------------------>|aclocal|
                     {user macro files} ->|       |------> aclocal.m4
                                          `-------'
    3.autoheader(autoconf): 根据configure.ac中的某些宏,比如cpp宏定义,运行m4,声称config.h.in
    
    user input files    optional input     process          output files
    ================    ==============     =======          ============
    
                        aclocal.m4 - - - - - - - .
                                                 |
                                                 V
                                         .----------,
    configure.ac ----------------------->|autoheader|----> autoconfig.h.in
                                         `----------'
    4.automake: automake将Makefile.am中定义的结构建立Makefile.in,然后configure脚本将生成的Makefile.in文件转换为Makefile。如果在configure.ac中定义了一些特殊的宏,比如AC_PROG_LIBTOOL,它会调用libtoolize,否则它会自己产生config.guess和config.sub
    
    user input files   optional input   processes          output files
    ================   ==============   =========          ============
    
                                         .--------,
                                         |        | - - -> COPYING
                                         |        | - - -> INSTALL
                                         |        |------> install-sh
                                         |        |------> missing
                                         |automake|------> mkinstalldirs
    configure.ac ----------------------->|        |
    Makefile.am  ----------------------->|        |------> Makefile.in
                                         |        |------> stamp-h.in
                                     .---+        | - - -> config.guess
                                     |   |        | - - -> config.sub
                                     |   `------+-'
                                     |          | - - - -> config.guess
                                     |libtoolize| - - - -> config.sub
                                     |          |--------> ltmain.sh
                                     |          |--------> ltconfig
                                     `----------'
    5.autoconf:将configure.ac中的宏展开,生成configure脚本。这个过程可能要用到aclocal.m4中定义的宏。
    
    user input files   optional input   processes          output files
    ================   ==============   =========          ============
    
                       aclocal.m4 - - - - - -.
                                             V
                                         .--------,
    configure.ac ----------------------->|autoconf|------> configure ----->autoconfig.h,Makefile
  • 相关阅读:
    BZOJ 3625: [Codeforces Round #250]小朋友和二叉树
    HDU 2069 Coin Change
    HDU 1709 The Balance
    HDU 1398 Square Coins
    HDU 1171 Big Event in HDU
    HDU 1085 Holding Bin-Laden Captive!
    BZOJ 3167: [Heoi2013]Sao
    BZOJ 1408: [Noi2002]Robot
    BZOJ 3163: [Heoi2013]Eden的新背包问题
    【Tsinsen-A1486】树(王康宁) 点分治 + Trie
  • 原文地址:https://www.cnblogs.com/MrZhang1/p/6517156.html
Copyright © 2011-2022 走看看