注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

还东国的博客

行之苟有恒,久久自芬芳

 
 
 

日志

 
 

(转载)图解autoscan、aclocal、autoheader、automake、autoconf、configure、make  

2012-04-24 17:26:27|  分类: LINUX编程 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

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

下面的图有点变形,大家可以看原文。

1.autoscan (autoconf): 扫描源代码以搜寻普通的可移植性问题,比如检查编译器,库,头文件等,生成文件configure.scan,它是configure.ac的一个雏形。

    your source files --> [autoscan*] --> [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 ,autoconfig.h.in - - - - - - -.                                           V                                       .--------,  configure.ac ----------------------->|autoconf|------> configure
 
6. ./configure的过程

.-------------> [config.cache] configure* --------------------------+-------------> config.log | [config.h.in] -. v .--> [autoconfig.h]
+-------> config.status* -+ Makefile.in ---' `--> Makefile
 
7. make过程
 
     [autoconfig.h] -.
+--> make* ---> 程序
Makefile ---'
 
                                     .---------,                     config.site - - ->|         |                    config.cache - - ->|         | - - -> 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 ------>|        |  {project sources} ---------------->|        |--------> {project targets}                                   .-+        +--,                                   | `--------'  |                                   |   libtool   |                                   |   missing   |                                   |  install-sh |                                   |mkinstalldirs|                                   `-------------'

  评论这张
 
阅读(1012)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017