linux下C语言编程makefile简单例子学习_第1页
linux下C语言编程makefile简单例子学习_第2页
linux下C语言编程makefile简单例子学习_第3页
linux下C语言编程makefile简单例子学习_第4页
linux下C语言编程makefile简单例子学习_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

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

文档简介

1、Linux下C语言编程基础(Makefile)2005-0l-l8l0:28:23来自:赛迪网假设我们有下面这样的一个程序,源代码如下:/*main.c*/#includemytooll.h#includemytool2.hintmain(intargc,char*argv)mytooll_print(hello);mytool2_print(hello);/*mytooll.h*/#ifndef_MYT00L_1_H#define_MYTOOL_1_Hvoidmytool1_print(char*print_str);#endif/*mytool1.c*/#includemytool1.hv

2、oidmytool1_print(char*print_str)printf(Thisismytoollprint%s,print_str);/*mytool2.h*/#ifndef_MYT00L_2_H#define_MYTOOL_2_Hvoidmytool2_print(char*print_str);#endif/*mytool2.c*/#includemytool2.hvoidmytool2_print(char*print_str)printf(Thisismytool2print%s,print_str);当然由于这个程序很短,我们可以这样来编译:gcc-cmain.cgcc-cm

3、ytooll.cgcc-cmytool2.cgcc-omainmain.omytooll.omytool2.o这样的话我们也可以产生main程序,而且也不是很麻烦。但是如果我们考虑一下如果有一天我们修改了其中的一个文件(比如说mytooll.c)那么我们难道还要重新输入上面的命令?也许你会说,这个很容易解决啊,我写一个SHELL脚本,让它帮我去完成不就可以了。是的对于这个程序来说,是可以起到作用的。但是当我们把事情想的更复杂一点,如果我们的程序有几百个源程序的时候,难道也要编译器重新一个一个的去编译?为此,聪明的程序员们想出了一个很好的工具来做这件事情,这就是make。我们只要执行以下make

4、,就可以把上面的问题解决掉。在我们执行make之前,我们要先编写一个非常重要的文件。一Makefile。对于上面的那个程序来说,可能的一个Makefile的文件是:#这是上面那个程序的Makefile文件:main:main.omytooll.omytool2.ogcc-omainmain.omytooll.omytool2.omain.o:main.cmytool1.hmytool2.hgcc-cmain.cmytool1.o:mytool1.cmytool1.hgcc-cmytool1.cmytool2.o:mytool2.cmytool2.hgcc-cmytool2.c有了这个Makef

5、ile文件,不论我们什么时候修改了源程序当中的什么文件,我们只要执行make命令,我们的编译器都只会去编译和我们修改的文件有关的文件,其它的文件它连理都不想去理的。F面我们学习Makefile是如何编写的。在Makefile中也#开始的行都是注释行.Makefile中最重要的是描述文件的依赖关系的说明。一般的格式是:target:componentsTABrule第一行表示的是依赖关系。第二行是规则。比如说我们上面的那个Makefile文件的第二行。main:main.omytool1.omytool2.o表示我们的目标(target)main的依赖对象(components)是main.om

6、ytooll.omytool2.o当倚赖的对象在目标修改后修改的话,就要去执行规则一行所指定的命令。就象我们的上面那个Makefile第三行所说的一样要执行gcc-omainmain.omytooll.omytool2.o注意规则一行中的TAB表示那里是一个TAB键Makefile有三个非常有用的变量。分别是$,$,$代表的意义分别是:$目标文件,$-所有的依赖文件,$-第一个依赖文件。如果我们使用上面三个变量,那么我们可以简化我们的Makefile文件为:#这是简化后的Makefilemain:main.omytool1.omytool2.ogcc-o$main.o:main.cmytool1.hmytool2.hgcc-c$mytool1.o:mytool1.cmytool1.hgcc-c$mytool2.o:mytool2.cmytool2.hgcc-c$经过简化后,我们的Makefile是简单了一点,不过人们有时候还想简单一点。这里我们学习一个Makefile的缺省规则.c.o:gcc-c$这个规则表示所有的.0文件都是依赖与相应的.c文件的。例如mytool.o依赖于mytool.c这样Makefile还可以变为:#这是再一次简化后的

温馨提示

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

评论

0/150

提交评论