makefile简单介绍

  现在的IDE环境大多是高度集成的,只需要按一个按钮即可完成编译-汇编-链接的工作,但是实际在嵌入式开发的过程中,需要根据实际需要编写个性化的需求,这就需要掌握makefile的写法。

  高级IDE的方便就是建立在makefile的基础之上,而makefile其实就是一个脚本文件,告诉编译器依赖文件以及编译规则,也就是类似于windows下的批处理文件。

  一个makefile是由若干个程序段组成的,每个段都有都有一组用来完成工作的命令集。程序段用目标名他(target)进行区分,目标也称作标号。不同的程序度需要关联时,在目标后可以有一个或者多个与程序段关联程序段的标号,每个关联标号之间用空格分隔,在命令集中,命令行必须以tab键开头,如以下格式:

  程序标号: 关联程序段目标1 关联程序段目标2

    命令集

  在任哲的书上有一个恰当的比喻来说明makefile是如何执行的:

  糖醋排骨: 糖 醋 排骨

    制作糖醋排骨

  糖:

    到商店去买糖

  醋:

    到商店去买醋

  排骨:

    到商店去买排骨

  实际上,如果利用make命令执行这个makefile,默认执行第一段,但是如果目标文件没有准备好,那就去寻找生成此目标文件的程序段。另外在编写makefile时,最好是将所有依赖写上去,这样表意清晰,格式整齐。另外有一种makefile的程序段有些特殊,这就是伪目标,伪目标简而言之就是对生成最后目标没有影响的target,比如清除工程中编译器自动产生的一些文件。

  makefile也可以定义变量,使用”变量名=值“即可声明一个变量,在引用这个变量时可以使用$(变量名)来进行引用。

  makefile中的注释使用#,如果依赖文件很长,可以使用‘\’进行转行功能。

时间: 2024-10-17 11:34:03

makefile简单介绍的相关文章

makefile 简单介绍

使用与来源: makefile文件(可由./configure创建)被make命令读取,make 命令执行时,需要一个 Makefile 文件,以告诉 make 命令需要怎么样的去编译和链接程序. 功能: 定义了一系列的规则来指定,哪些文件需要先编译, 哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作. 规则: target ... : prerequisites ... command target 也就是一个目标文件,可以是 Object File,也可以是执行文件.还可

CMake 简单介绍 图

http://tech.uc.cn/?p=914 CMake特点 CMake需要用户用CMake规范的语法编写CMake脚本,该语法简单易用,入门极其顺手 原生支持 C/C++/Fortran/Java 的相依性的自动分析功能,免除了程序员对代码依赖的调整,对整个开发工作帮助很大 支持 SWIG.Qt.FLTK 开发框架 支持跨平台编译,这是CMake名字的来源 能够转换特殊平台的 IDE 项目文档,如xcode 与Dart.CTest 和 CPack 集成,可以组成自动化的构建系统 CMake

Linux 内核开发—内核简单介绍

内核简单介绍 Linux 构成 Linux 为什么被划分为系统空间和内核空间 隔离核心程序和应用程序,实现对核心程序和数据的保护. 什么内核空间,用户空间 内核空间和用户空间是程序执行的两种不同的状态,Linux对自身软件系统进行了划分,一部分核心的软件独立于普通的软件,拥有特权级别,可以訪问平台的全部硬件和资源,称为"内核空间".而普通的软件执行在"用户空间",它仅仅拥有有限的系统资源,不能直接訪问内核空间和硬件资源. 将系统分为"内核空间"和

CMake 简单介绍

CMake特点 CMake需要用户用CMake规范的语法编写CMake脚本,该语法简单易用,入门极其顺手 原生支持 C/C++/Fortran/Java 的相依性的自动分析功能,免除了程序员对代码依赖的调整,对整个开发工作帮助很大 支持 SWIG.Qt.FLTK 开发框架 支持跨平台编译,这是CMake名字的来源 能够转换特殊平台的 IDE 项目文档,如xcode 与Dart.CTest 和 CPack 集成,可以组成自动化的构建系统 CMake vs GNU AutoTools 使用CMake

python的列表,元组和字典简单介绍

引 入 java                                   python 存取多个值:数组或list集合 ------------------------> 列表,元组 key-value格式:    Map        ------------------------>    字典 自己学习发现,java跟python这两门面向对象语言在数据类型的定义上,很多思想都是互通的,这里不说java,简单介绍一下python的列表,元组和字典. 一.列表 List: 最通

javascript的return语句简单介绍

javascript的return语句简单介绍:return语句在js中非常的重要,不仅仅具有返回函数值的功能,还具有一些特殊的用法,有个清晰的把握是非常有必要的.下面就结合实例简单介绍一下return语句的作用.一.用来返回控制和函数结果:通常情况,return语句对于一个函数是很有必要的,因为往往需要函数在一系列的代码执行后会得到一个期望的返回值,而此值就是通过return语句返回,并且将控制权返回给主调函数.语法格式: return 表达式 代码实例如下: function add(){

Object-c集合的简单介绍

一.简单介绍 NSArray/NSMutableArray NSSet/NSMutableSet NSDictionary/NSMutableDictionary NSArray.NSSet.NSDictionary是不可变的,创建的时候初始化 NSMutableArray.NSMutableSet.NSMutableDictionary是可变的 二.使用介绍 NSArray是有序的数组 NSMutableArray *myArray=[[NSMutableArray alloc] init];

plsql的环境与介绍:环境的搭建和plsql的简单介绍

PLSQL编程 1.环境的搭建 (1)创建一个存储表空间 SQL> conn /as sysdbaConnected. SQL> create tablespace plsql datafile '/u01/oracle/oradata/ORCL/plsql01.dbf' size 1G; Tablespace created. (2)创建PLSQL用户SQL> create user plsql identified by plsql default tablespace plsql;

CSS之box-sizing的用处简单介绍

前几天才发现有 box-sizing 这么个样式属性,研究了一番感觉很有意思, 通过指定容器的盒子模型类型,达到不同的展示效果 例如:当一个容器宽度定义为 width:100%;  之后,如果再增加 padding 或者 border 则会溢出父容器,是向外扩张的 如果使用该样式,指定为 box-sizing: border-box; 则 padding 和 border 就不会再溢出,而是向内收缩的,这个效果感觉非常实用, 特别是 input 和 textarea 等 现在设置 100% 再直