图解autoscan、aclocal、autoheader、automake、autoconf、configure、make
2015-06-30 10:50
253 查看
1.autoscan(autoconf):扫描源代码以搜寻普通的可移植性问题,比如检查编译器,库,头文件等,生成文件configure.scan,它是configure.ac的一个雏形。
yoursourcefiles-->[autoscan*]-->[configure.scan]-->configure.ac
2.aclocal(automake):根据已经安装的宏,用户定义宏和acinclude.m4文件中的宏将configure.ac文件所需要的宏集中定义到文件aclocal.m4中。aclocal是一个perl脚本程序,它的定义是:“aclocal-createaclocal.m4byscanning
configure.ac”
4.automake:automake将Makefile.am中定义的结构建立Makefile.in,然后configure脚本将生成的Makefile.in文件转换为Makefile。如果在configure.ac中定义了一些特殊的宏,比如AC_PROG_LIBTOOL,它会调用libtoolize,否则它会自己产生config.guess和config.sub
5.autoconf:将configure.ac中的宏展开,生成configure脚本。这个过程可能要用到aclocal.m4中定义的宏。
yoursourcefiles-->[autoscan*]-->[configure.scan]-->configure.ac
2.aclocal(automake):根据已经安装的宏,用户定义宏和acinclude.m4文件中的宏将configure.ac文件所需要的宏集中定义到文件aclocal.m4中。aclocal是一个perl脚本程序,它的定义是:“aclocal-createaclocal.m4byscanning
configure.ac”
userinputfilesoptionalinputprocessoutputfiles ================================================= acinclude.m4-----. V .-------, configure.ac------------------------>|aclocal| {usermacrofiles}->||------>aclocal.m4 `-------' 3.autoheader(autoconf):根据configure.ac中的某些宏,比如cpp宏定义,运行m4,声称config.h.in userinputfilesoptionalinputprocessoutputfiles ================================================= 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
userinputfilesoptionalinputprocessesoutputfiles =================================================== .--------, ||--->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中定义的宏。
userinputfilesoptionalinputprocessesoutputfiles =================================================== 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|
`------------'[code].--------,
Makefile------>||
config.h------>||
{projectsources}---------------->||-------->{projecttargets}
.-++--,
|`--------'|
|libtool|
|missing|
|install-sh|
|mkinstalldirs|
`-------------'
相关文章推荐
- 20个大大节省你时间的HTML5开发工具
- 欢迎使用CSDN-markdown编辑器
- codeforces #305 547B B. Mike and Feet(单调栈)
- Swift 中使用Nimble 库进行单元测试
- 文本超出盒子的内容用省略号代替
- Tiny对JDK有什么要求么?
- 20个大大节省你时间的HTML5开发工具
- 心门
- php读取excel中的时间转换问题
- How to install 3 nodes Nutanix Cluster in one ESXi 6.0 Server
- 如何学习编程的
- 摘自《解析极限编程-拥抱变化》
- 链表中倒数第k个结点
- Android View动画
- OSG安装配置入门
- 解题报告:硬币排成线 II
- Linux kernel map
- Android 从网络中获取图片
- 工作流实现会签
- 【DOS】进程相关