Configure,Makefile.am, Makefile.in, Makefile文件之间关系(转)
2014-02-27 10:21
429 查看
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--->|configure|--->config.cache|+-,`-+-------'|||---->config.statusconfig.h.in------->|config-|---->config.hMakefile.in------->|.status|---->Makefile||---->stamp-h|+--,.-+|||`------+--'|ltmain.sh------->|ltconfig|------->libtool|||`-+------'||config.guess||config.sub|`------------'
.--------,Makefile------>||config.h------>|make|{projectsources}---------------->||-------->{projecttargets}.-++--,|`--------'||libtool||missing||install-sh||mkinstalldirs|`-------------'实例:在/hello/目录下创建一个hello.c文件,并编译运行它:#cd/hello/(1)编写源文件hello.c:#include<stdio.h>intmain(intargc,char**argv){printf("Hello,GNU!n");return0;}[litao@vm0000131hello]$lltotal4-rw-rw-r--1litaolitao68Aug1212:02hello.c一、autoscan[litao@vm0000131hello]$autoscanautom4te:configure.ac:nosuchfileordirectoryautoscan:/usr/bin/autom4tefailedwithexitstatus:1[litao@vm0000131hello]$lltotal8-rw-rw-r--1litaolitao0Aug1212:03autoscan.log-rw-rw-r--1litaolitao457Aug1212:03configure.scan-rw-rw-r--1litaolitao68Aug1212:02hello.c已经生成了configure.scan,autoscan.log文件将configure.scan修改为configure.in,最后修改的内容如下:[litao@vm0000131hello]$mvconfigure.scanconfigure.in[litao@vm0000131hello]$vimconfigure.in#-*-Autoconf-*-#Processthisfilewithautoconftoproduceaconfigurescript.AC_PREREQ(2.59)AC_INIT(FULL-PACKAGE-NAME,VERSION,BUG-REPORT-ADDRESS)AC_CONFIG_SRCDIR([hello.c])#AC_CONFIG_HEADER([config.h])AM_INIT_AUTOMAKE(hello,1.0)#Checksforprograms.AC_PROG_CC#Checksforlibraries.#Checksforheaderfiles.#Checksfortypedefs,structures,andcompilercharacteristics.#Checksforlibraryfunctions.AC_OUTPUT(Makefile)二、acloacl[litao@vm0000131hello]$aclocal生成aclocal.m4和autom4te.cache(生成aclocal.m4的过程中涉及到configure.in)[litao@vm0000131hello]$lltotal44-rw-rw-r--1litaolitao31120Aug1212:08aclocal.m4drwxr-xr-x2litaolitao4096Aug1212:08autom4te.cache-rw-rw-r--1litaolitao0Aug1212:03autoscan.log-rw-rw-r--1litaolitao496Aug1212:08configure.in-rw-rw-r--1litaolitao68Aug1212:02hello.c三、antoconf[litao@vm0000131hello]$autoconf生成configure(根据configure.in,和aclocal.m4)[litao@vm0000131hello]$lltotal168-rw-rw-r--1litaolitao31120Aug1212:08aclocal.m4drwxr-xr-x2litaolitao4096Aug1212:11autom4te.cache-rw-rw-r--1litaolitao0Aug1212:03autoscan.log-rwxrwxr-x1litaolitao122297Aug1212:11configure-rw-rw-r--1litaolitao496Aug1212:08configure.in-rw-rw-r--1litaolitao68Aug1212:02hello.c四、编写Makefile.am:AUTOMAKE_OPTIONS=foreignbin_PROGRAMS=hellohello_SOURCES=hello.c五、automake生成Makefile.in,depcomp,install-sh,和missing(根据Makefile.am,和aclocal.m4)[litao@vm0000131hello]$automakeconfigure.in:requiredfile`./install-sh'notfoundconfigure.in:requiredfile`./missing'notfoundMakefile.am:requiredfile`./depcomp'notfound[litao@vm0000131hello]$automake--add-missingconfigure.in:installing`./install-sh'configure.in:installing`./missing'Makefile.am:installing`./depcomp'[litao@vm0000131hello]$lltotal192-rw-rw-r--1litaolitao31120Aug1212:08aclocal.m4drwxr-xr-x2litaolitao4096Aug1212:14autom4te.cache-rw-rw-r--1litaolitao0Aug1212:03autoscan.log-rwxrwxr-x1litaolitao122297Aug1212:11configure-rw-rw-r--1litaolitao496Aug1212:08configure.inlrwxrwxrwx1litaolitao31Aug1212:16depcomp->/usr/share/automake-1.9/depcomp-rw-rw-r--1litaolitao68Aug1212:02hello.clrwxrwxrwx1litaolitao34Aug1212:16install-sh->/usr/share/automake-1.9/install-sh-rw-rw-r--1litaolitao69Aug1212:15Makefile.am-rw-rw-r--1litaolitao16561Aug1212:16Makefile.inlrwxrwxrwx1litaolitao31Aug1212:16missing->/usr/share/automake-1.9/missing六、configure生成Makefile,config.log,和config.status
相关文章推荐
- Configure,Makefile.am, Makefile.in, Makefile文件之间关系
- Configure,Makefile.am, Makefile.in, Makefile文件之间关系
- Configure,Makefile.am, Makefile.in, Makefile文件之间关系
- Configure,Makefile.am, Makefile.in, Makefile文件之间关系(转)
- Configure,Makefile.am, Makefile.in, Makefile文件之间关系
- 【编译器】Configure,Makefile.am, Makefile.in, Makefile文件之间关系
- Configure,Makefile.am, Makefile.in, Makefile文件之间关系
- Configure,Makefile.am, Makefile.in, Makefile文件之间关系
- Configure,Makefile.am, Makefile.in, Makefile文件之间关系
- Configure,Makefile.am, Makefile.in, Makefile文件之间关系
- Configure,Makefile.am, Makefile.in, Makefile文件之间关系
- Configure,Makefile.am, Makefile.in, Makefile文件之间关系
- Configure,Makefile.am, Makefile.in, Makefile文件之间关系
- Configure,Makefile.am, Makefile.in, Makefile文件之间关系
- Configure,Makefile.am, Makefile.in, Makefile文件之间关系
- Configure,Makefile.am, Makefile.in, Makefile文件之间关系(转)
- Configure,Makefile.am, Makefile.in, Makefile文件之间关系
- Configure,Makefile.am, Makefile.in, Makefile文件之间关系
- Configure,Makefile.am, Makefile.in, Makefile文件之间关系 (转载)
- Configure,Makefile.am, Makefile.in, Makefile文件之间关系