一、引例:

#Makefile

objects=test1.o test2.o

main:$(objects)

gcc -o main $(objects)

clean:

rm main $(objects)

二、简介:

中文格式:

规则的目标 : 规则的依赖

规则的命令行

英文格式:

target : prerequisites

command

介绍:

target:

通常是 最后需要生成的文件名 或者 为了实现这个目的而必需的 中间过程文件名

可以是 .o文件、也可以是最后的可执行程序的文件名等。

另外,目标也可以是一个make执行的动作的名称,如目标“clean”,我们称这样的目标是“伪目标”。

prerequisites:

生成规则目标所需要的文件名列表。

通常一个目标依赖于一个或者多个文件

ommand:

执行规则所用的命令行语句

注意:每一个命令行必须以[Tab]字符开始。

[Tab]字符告诉 make 此行是一个命令行。make 按照命令完成相应的动作。

这也是书写 Makefile 中容易产生,而且比较隐蔽的错误。

三、规则与相关语句

(一)  换行处每行的最后都要加上  “ / ”

(二)  指定变量:

在上面的引例中objects=test1.o test2.o  中的 objects 就是作为指定变量出现。

因为 test1.o test2.o  这两个.o 文件在下面的程序当中出现了不止一次,类似C语言中的宏定义

如果需要更改的时候只需要改最上面的指定变量就可以了。

作用:不但减少书写的工作量,而且可以减少修改而产生错误的可能。

使用:  $(objects)      // 语句中前面加空格

(三)  清除工作目录过程文件:

在上面的引例中,clean:    rm main $(objects) 中 clean 就作为清除操作。

作用:为了实现清除当前目录中编译过程中产生的临时文件。

使用:   clean :

rm main $(objects)

但是通常我们要写成:

.PHONY : clean

clean :

-rm main $(objects)

目的: 1)通过“.PHONY”特殊目标将“clean”目标声明为伪目标。

避免当磁盘上存在一个名为“clean”文件时,目标“clean”所在规则的命令无法执行。

2)在命令行之前使用 “-”,意思是忽略命令“rm”的执行错误。

注意: 这样的一个目标在 Makefile 中,不能将其作为终极目标(Makefile 的第一个目标)。

因为我们的初衷并不是当你在命令行上输入 make 以后执行删除动作。而是要创建或者更新程序

在我们上边的例子中,就是在输入 make 以后要需要对目标“edit”进行创建或者重建。

四、在终端里使用执行Makefile

(一)  在当前目录下  sudo make

(二)  输入密码后 提示 最终目标已经更新到最新

(三)  在当前目录下  sudo ./main      // main为最终目标名字

(四)  显示 程序的界面

Makefile 简介的更多相关文章

  1. Makefile简介

    1.源程序的编译在Linux下面,如果要编译一个C语言源程序,我们要使用GNU的gcc编译器. 下面我们以一个实例来说明如何使用gcc编译器.假设我们有下面一个非常简单的源程序(hello.c):in ...

  2. qmake, makefile, make是什么东东,makefile简介!

    qmake是一个协助简化跨平台开发的构建过程 的工具,Qt附带的工具之一 .qmake能够自动生成Makefile.Microsoft Visual Studio 专案文件 和 xcode 专案文件. ...

  3. Linux学习:Makefile简介及模板

    一.基本概念介绍: Makefile 文件就是告诉make命令需要怎么样的去编译和链接程序. 编写Makefile的基本规则: 1.如果这个工程没有编译过,那么我们的所有C文件都要编译并被链接. 2. ...

  4. Makefile简易教程

    本文部分内容引用: 中文维基百科. 一个简单的Makefile教程. Makefile简介 在软件开发中,make通常被视为一种软件构建工具.该工具主要经由读取一种名为"makefile&q ...

  5. 转载-------makefile 使用总结

    转载自:http://www.cnblogs.com/wang_yb/p/3990952.html 1. Makefile 简介 Makefile 是和 make 命令一起配合使用的. 很多大型项目的 ...

  6. Makefile使用总结

    1. Makefile 简介 Makefile 是和 make 命令一起配合使用的. 很多大型项目的编译都是通过 Makefile 来组织的, 如果没有 Makefile, 那很多项目中各种库和代码之 ...

  7. Makefile 使用总结【转】

    转自:http://www.cnblogs.com/wang_yb/p/3990952.html 1. Makefile 简介 Makefile 是和 make 命令一起配合使用的. 很多大型项目的编 ...

  8. makefile基础实例讲解 分类: C/C++ 2015-03-16 10:11 66人阅读 评论(0) 收藏

    一.makefile简介 定义:makefile定义了软件开发过程中,项目工程编译链.接接的方法和规则. 产生:由IDE自动生成或者开发者手动书写. 作用:Unix(MAC OS.Solars)和Li ...

  9. makefile学习笔记(一)

    1.1:make概述 在linux环境下使用make工具能够比较容易的构建一个属于自己的工程,整个工程的编译只需要一个命令就可以完成编译.连接以至于最后的执行.不过我们需要投入一些时间去学习如何完成m ...

随机推荐

  1. CF678F题解

    首先题意中的有撤销操作,直接李超树肯定不行,题目允许离线,所以考虑线段树分治 所以问题就变成了求一次函数最大值 这不是李超树板子吗??? 然后可以对每个节点都建立动态开点李超树,查询的时候直接从叶子节 ...

  2. ENVI提取水系并进行生态敏感性分析

    4 具体步骤 4.1 DEM数据拼接 (1)打开ENVI软件,选择[File][Open],添加文件夹DEM数据中的影像,操作如图4.1.1所示,结果如图4.1.2. 图4.1.1 添加DEM数据影像 ...

  3. CSV格式的文件与EXCEL文件的区别

    CSV格式的文件与EXCEL文件的区别 Excel CSV 这是一个二进制文件,它保存有关工作簿中所有工作表的信息 CSV代表Comma Separated Values .这是一个纯文本格式,用逗号 ...

  4. request的自动urlencode问题解决

    今天写盲注脚本的时候,由于题目对空格进行了过滤,所以必须要用%09进行代替,然而当我在脚本中,将payload的空格替换成%09的时候,抓包发现进行了两次编码,导致脚本一直跑不通. 自己在网上也没有找 ...

  5. 让编程更轻松的 7 个 Visual Studio 扩展 : 以下几个扩展,BuildVision可以用

    是时候升级你最喜欢的IDE了!在这篇文章中,我将介绍一些我最喜欢的与众不同的 Visual Studio 扩展,是它们让我的日常编程工作变得更加轻松.对于一些明摆着的,例如 ReSharper 和 O ...

  6. Java反射详解篇--一篇入魂

    1.反射概述 Java程序在运行时操作类中的属性和方法的机制,称为反射机制. 一个关键点:运行时 一般我们在开发程序时,都知道自己具体用了什么类,直接创建使用即可.但当你写一些通用的功能时没办法在编写 ...

  7. 关于.NET 6.0 Crossgen2的一些研究

    NET 6.0引入了Crossgen工具的后续版本Crossgen2,这个工具提供了程序提前(AOT)编译的能力. 什么是CrossGen? 我们日常开发时使用C#编译器CSC编译一个.NET程序集, ...

  8. 手把手带你使用EFR32 -- 土壤湿度传感器变身第二形态,以 ZigBee 形态出击

    前言 后悔,总之就是非常后悔,我当时到底是为啥才会猪油蒙心,选择了 EFR32 来学习 ZigBee 使用啊? EFR32 这玩意看性能确实不错,但是资料太少了,EmberZnet SDK 也是用得一 ...

  9. Android Studio Gradle project sync failed

    使用Android Studio 1.1.0创建新项目后,运行报以下错: Error:Unable to start the daemon process. This problem might be ...

  10. The Http request is not acceptable for the requested resource.

    一.问题来源 最近给第三方做了一个我们系统的免密登陆,开发完成本地测试没有问题,但是第三方调用免密登陆接口并跳转之后报如下错误: The Http request is not acceptable ...