makefile 入门教程

makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。

Make工具最主要也是最基本的功能就是通过makefile文件来描述源程序之间的相互关系并自动维护编译工作。而makefile 文件需要按照某种语法进行编写,文件中需要说明如何编译各个源文件并连接生成可执行文件,并要求定义源文件之间的依赖关系。makefile 文件是许多编译器--包括 Windows NT 下的编译器--维护编译信息的常用方法,只是在集成开发环境中,用户通过友好的界面修改 makefile 文件而已。
在   UNIX 系统中,习惯使用 Makefile 作为 makefile 文件。如果要使用其他文件作为 makefile,则可利用类似下面的 make 命令选项指定 makefile 文件。
一个文件,指示程序如何编译和链接程序。makefile文件的默认名称是名副其实的Makefile,但可以指定一个命令行选项的名称。
 
make程序有助于您在开发大型程序跟踪整个程序,其中部分已经改变,只有那些编译自上次编译的程序,它已经改变了部分。

关于编译阶段
 
编译一个小的C程序至少需要一个单一的文件.h文件(如适用)。虽然命令执行此任务只需CC file.c中,有3个步骤,以取得最终的可执行程序,如下所示:
 
编译阶段:所有的C语言代码.c文件中被转换成一个低级语言汇编语言;决策.s文件。
 
汇编阶段:前阶段所作的汇编语言代码,然后转换成目标代码的代码片段,该计算机直接理解。目标代码文件.o 结束。
 
链接阶段:编译程序涉及到链接的对象代码的代码库,其中包含一定的“内置”的功能,如printf的最后阶段。这个阶段产生一个可执行程序,默认情况下,这是名为a.out。
makefile 例子
makefile 例子
这是一个例子编译hello程序Makefile。此程序包含三个文件main.cpp,factorial.cpp,hello.cpp。 # Define required macros hereSHELL = /bin/shOBJS = main.o factorial.o hello.oCFLAG = -Wall -gCC = gccINCLUDE =LIBS = -lmhello:$...... 于2013-11-02发表在 Makefile ,阅读86。 Makefile 其他功能
Makefile 其他功能
make递归使用 递归使用的手段使用,make在makefile作为命令。这种技术是非常有用的,当你想要的makefile各种子系统组成一个更大的系统。例如,假设你有一个子目录,子目录都有其自己的...... 于2013-11-02发表在 Makefile ,阅读156。 Makefile 文件重新编译
Makefile 文件重新编译
make 程序是一个智能的实用程序和工作根据在源文件中的变化。如果有四个文件main.cpp,hello.cpp,factorial.cpp和functions.h。这里所有reamining文件是依赖functions.h,main.cpp的是依赖于hello.cpp,...... 于2013-11-02发表在 Makefile ,阅读200。 Makefile include
Makefile include
makefile include 指令 include指令告诉make暂停读取当前makefile文件和读取一个或多个其它的makefile,然后再继续。该指令是一行在makefile中,看起来像这样: include filenames... 文件名可以包含...... 于2013-11-02发表在 Makefile ,阅读62。 Makefile 指令
Makefile 指令
有好几种指令以不同的形式。让程序可能不支持所有指令。因此,请检查make是否支持指令,我们这里解释。 GNU make支持这些指令 条件指令 条件的指令 ifeq指令开始的条件,指定的条件...... 于2013-11-02发表在 Makefile ,阅读90。 Makefile 自定义后缀规则
Makefile 自定义后缀规则
就其本身而言,make已经知道,为了创建一个 .o文件,就必须使用 cc-c相应的c文件。 建成MAKE这些规则,可以利用这一点来缩短Makefile。如果仅仅只是表示 .h 文件的 Makefile依赖线,依赖于...... 于2013-11-02发表在 Makefile ,阅读132。 Makefile 定义规则
Makefile 定义规则
一个Makefile目标规则的一般语法 target [target...] : [dependent ....] [ command ...] 方括号中的项是可选的,省略号是指一个或多个。注意标签,每个命令前需要。 下面给出一个简单的例子,定义...... 于2013-11-02发表在 Makefile ,阅读189。 Makefile 宏
Makefile 宏
make程序允许您使用宏,这是类似的变量。 = 一对一个Makefile中定义的宏。例如: MACROS= -mePSROFF= groff -TpsDITROFF= groff -TdviCFLAGS= -O -systype bsd43LIBS = -lncurses -lm -lsdlMYFACE = :*) 特殊的宏 目标规则...... 于2013-11-02发表在 Makefile ,阅读117。 Makefile 定义依赖性
Makefile 定义依赖性
这是很常见的,最终的二进制文件将依赖于各种源代码和源代码的头文件。依存关系是重要的,因为他们告诉对任何目标的源。请看下面的例子 hello: main.o factorial.o hello.o$(CC) main.o fact...... 于2013-11-02发表在 Makefile ,阅读63。 为什么需要Makefile?
为什么需要Makefile?
对于本次教程中的讨论,假定有以下的源文件。 main.cpp hello.cpp factorial.cpp functions.h main.cpp文件的内容 #include iostream.h#include functions.hint main(){ print_hello(); cout endl; cout The factorial of 5 is fac...... 于2013-11-01发表在 Makefile ,阅读121。

转载于:https://my.oschina.net/u/1255514/blog/173656

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值