文件linux下makefile的automake生成全攻略_第1页
文件linux下makefile的automake生成全攻略_第2页
文件linux下makefile的automake生成全攻略_第3页
文件linux下makefile的automake生成全攻略_第4页
文件linux下makefile的automake生成全攻略_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

LinuxMakefileautomake在本文中,将给大家介绍如何使用autoconf和automake两个工具来帮助我们自动地生Makefile./configure“makemakeToy一、MakefileMakefile是用于自动编译和的,一个工程有很多文件组成,每一个文件的改变都会在make时会决定在的时候需要重新编译哪些文件。Makefile的就是:让编译器知道要编译一个文件需要依赖其他的哪些文件。当那些Makefile经常和自己的开发环境相关联,当系统Makefile的诸多问题,automake恰好能很好地帮助我们解决这些问题。据一个宏文件生成configure,由automake根据另一个宏文件生成Makefile.in,再使用configure依据Makefile.in来生成一个符合惯例的Makefile。下面详细介绍Makefileautomake生成方法。本文所提到的程序是基于Linux版本:FedoraCorerelease1,它包含了我们要用到autoconf,automake。二、 oworld入 oworld开始。新建三个文件 然后执行:aclocal;autoconf;automake--add-missing;./configure;make;./就可以看到Makefile被产生出来,而且可以将 令就可以做出一个符合惯例的Makefile,感觉如何呀。1$ $ $ $ 2 然后用你自己最喜欢的编辑器写一个owrold.c文件,如命令:vioworld.c使用下面的代码作使用下面的代码作 oworld.c的内容intmain(intargc,char**{ o,LinuxWorld!\n");return0;}现在 下就应该有一个你自己写 oworld.c了3、生成我们使用autoscan命令来帮助我们根 下的源代码生成一个configure.in$$$ 执行后 下会生成一个文件:configure.scan,我们可以拿它作configure.in#-*-Autoconf#-*-Autoconf-#Processthisfilewithautoconftoproduceaconfigure内容开始 oworld,1.0)#Checksfor#Checksfor#Checksforheader#Checksfortypedefs,structures,andcompiler#Checksforlibraryfunctions.内容结束$aclocal.m4 aclocalautoconf$aclocal.m4 $$$aclocal.m4autom4te.cacheconfigure 大家可以看到configure.in内容是一些宏定义,这些宏经autoconf处理后会变成检查系统特性、环境变量、软件必须的参数的s autoconf是用来生成自动配置软件源代码(configure)的工具。configureautoconf运行,且在运行的过程中,不需要用户的干预。要生成configure文件,你必须告诉autoconfaclocalaclocal.m4aclocalconfigure.inaclocal.m4aclocal是一个程序,它的定义是:“aclocalcreateaclocal.m4byscanningconfigure.ac”autoconf从configure.inautoconf需要GNUm4宏处理器来处理aclocal.m4,生成configurem4是一个宏处理器。将输入拷贝到输出,同时将宏展开。宏可以是内嵌的,也可以是用户定义的。除了可以展开宏,m4还有一些内建的函数,用来文件,执行命令,整数运算,文本操作,循环等。m4既可以作为编译器的前端,也可以单独作为一个宏处理4$viMakefile.am$vi内容如下 automakeMakefile.amMakefile.in。Makefile.am中定义的宏和目标,automakebin_PROGRAMS将导致编译和连接5$automake--add-missingconfigure.in:installing`./install-sh'configure.in:$automake--add-missingconfigure.in:installing`./install-sh'configure.in:installing`./mkinstalldirs'configure.in:installing`./missing'Makefile.am:installing` configure.in:installing`./missing'Makefile.am:installing` $checkingforpatibleinstall.../usr/bin/install-$checkingforpatibleinstall.../usr/bin/install-checkingwhetherbuildenvironmentissane...yescheckingforgawk...gawkcheckingwhethermakesets$(MAKE)...yescheckingforgcc...gcccheckingforCcompilerdefaultoutput...a.outcheckingwhethertheCcompilerworks...yescheckingwhetherwearecrosscompiling...nocheckingforsuffixofexecutables...checkingforsuffixofobjectfiles...checkingwhetherweareusingtheGNUCcompiler...yescheckingwhethergccaccepts-g...yescheckingforgccoptiontoacceptANSIC...noneneededcheckingforstyleofincludeusedbymake...GNUcheckingdependencystyleofgcc...gcc3configure:creating./config.statusconfig.status:creatingMakefileconfig.status:executingdepfilescommands$ls-l-rw-rw-r--1yutaoyutao15035Oct1510:40Makefile$ $ - oworld"-DVERSION="1.0"-I.-I.-g-O2- oworld.o-MD-MP-MF oworld.Tpo"-c- oworld.o`test-f oworld.c'||echo oworld.c;thenmv-f".deps/elserm-f".deps/oworld.Tpo"oworld.Tpo";exit1;oworld.Po";gccgcc-g-O2- 运 $./o,Linux这样oworld就编译出来了,你如果按上面的步骤来做的话,应该也会很容易地编译出正确的oworldmake命令,如makeclean,makeinstall,makedist,看看它们会给你什么样的效果。感觉如何?自己也能写出这么专业的1、autoscan是用来扫描源代码生成configure.scanautoscan可以用名做为autoscan将认为使用的是当前。autoscan将扫描你所指定中的源文件,并创建configure.scan文件。2、configure.scan3、aclocalaclocal是一个perl程序aclocal根据configure.in文件的内容自动生成文件。aclocal的定义是:“aclocalcreateaclocal.m4byscanningconfigure.ac”。4、autoconfautoconf是用来产生configure文件的。configure是一个,它能设置源程序来适应configure.in文件的内容是一些宏,这些宏经过autoconf处理后会变成检查系统特性、环境变量、软件必须的参数的s 。configure.in文件中的宏的顺序并没有规定,但是你必须在所有宏的最前面和最后面分别加上AC_INIT宏和AC_OUTPUT宏。configure.ini这个宏是必须的,它描述了要生成的软件包的名字及其版本号:PACKAGE是软件包的名字,VERSIONmakedistoworld-1.0.tar.gz的软件包,其中就有对应的软件包的名字和版本号CMakefileaclocalaclocal.m4文件。产生了configure.in和aclocal.m4两个宏文件后,我们就可以使用autoconfconfigure5、automakeautomake时,它会检查下是否存在标准GNU软foreign时,automake会改用一般软件包的标准来检查。用空格符号将它们隔开。比如需要oworld.h,oworld.c那么请写oworld_SOURCES=oworld.howorld.cfilename_SOURCES。6、automakeadd-missingMakefile.in选项--add-missing的定义是“addmissingstandardfilestopackage”automake加我们用automake产生出来的Makefile.in文件是符合GNUMakefile惯例的,接下来我们只要执行configure这个s 就可以产生合适的Makefile文件了。7、GNUMakefielMakefileMakefilemakemakeobject文件(后缀为“.o”的文件)make将编译成功的可执行文件安装到系 中,一般为 makepackagetar.gz

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论