npcomet 发表于 2009-2-3 11:22:47

图解aclocal、autoconf、automake、autoheader、configure

原文地址:http://hi.baidu.com/yzkuang/blog/item/557e4f24423d8136c9955908.html1.autoscan (autoconf): 扫描源代码以搜寻普通的可移植性问题,比如检查编译器,库,头文件等,生成文件configure.scan,它是configure.ac的一个雏形。

    your source files --> --> --> 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 ,autoconfig.h.in - - - - - - -.
                                       V
                                     .--------,
configure.ac ----------------------->|autoconf|------> configure



6. ./configure的过程


                                           .------------->
   configure* --------------------------+-------------> config.log
                                          |
             -.            v            .-->
                           +-------> config.status* -+                  
            Makefile.in ---'                         `-->   Makefile



7. make过程



-.
                     +--> make* --->程序
      Makefile   ---'



.---------,
                   config.site - - ->|         |
                  config.cache - - ->|configure| - - -> config.cache
                                     |         +-,
                                     `-+-------' |
                                       |         |----> config.status
                   config.h.in ------->|config-|----> config.h
                   Makefile.in ------->|.status|----> Makefile
                                       |         |----> stamp-h
                                       |         +--,
                                     .-+         ||
                                     | `------+--'|
                   ltmain.sh ------->|ltconfig|-------> libtool
                                     |      |   |
                                     `-+------'   |
                                       |config.guess|
                                       | config.sub |
                                       `------------'

.--------,
                   Makefile ------>|      |
                   config.h ------>|make|
{project sources} ---------------->|      |--------> {project targets}
                                 .-+      +--,
                                 | `--------'|
                                 |   libtool   |
                                 |   missing   |
                                 |install-sh |
                                 |mkinstalldirs|
                                 `-------------'


jiangtao9999 发表于 2009-2-3 17:03:49

图很乱,后果很严重……

npcomet 发表于 2009-2-3 17:14:38

大哥
这个就不要太强求了
文本排版挺不容易的

jiangtao9999 发表于 2009-2-3 19:13:41

貌似 code 标签有一个用途就是排版。
      |   |
      |   |
      \-----/

npcomet 发表于 2009-2-3 19:32:08

搞定

jiangtao9999 发表于 2009-2-3 19:45:43

继续 BS ,竟然整版全都用 code ……

npcomet 发表于 2009-2-3 20:28:48

:x :x :x

jiangtao9999 发表于 2009-2-3 23:04:10

:roll:
楼上反应不要太明显了啊……

npcomet 发表于 2009-2-4 02:23:07

:? :? :?
页: [1]
查看完整版本: 图解aclocal、autoconf、automake、autoheader、configure