makefile简单介绍
现在的IDE环境大多是高度集成的,只需要按一个按钮即可完成编译-汇编-链接的工作,但是实际在嵌入式开发的过程中,需要根据实际需要编写个性化的需求,这就需要掌握makefile的写法。
高级IDE的方便就是建立在makefile的基础之上,而makefile其实就是一个脚本文件,告诉编译器依赖文件以及编译规则,也就是类似于windows下的批处理文件。
一个makefile是由若干个程序段组成的,每个段都有都有一组用来完成工作的命令集。程序段用目标名他(target)进行区分,目标也称作标号。不同的程序度需要关联时,在目标后可以有一个或者多个与程序段关联程序段的标号,每个关联标号之间用空格分隔,在命令集中,命令行必须以tab键开头,如以下格式:
程序标号: 关联程序段目标1 关联程序段目标2
命令集
在任哲的书上有一个恰当的比喻来说明makefile是如何执行的:
糖醋排骨: 糖 醋 排骨
制作糖醋排骨
糖:
到商店去买糖
醋:
到商店去买醋
排骨:
到商店去买排骨
实际上,如果利用make命令执行这个makefile,默认执行第一段,但是如果目标文件没有准备好,那就去寻找生成此目标文件的程序段。另外在编写makefile时,最好是将所有依赖写上去,这样表意清晰,格式整齐。另外有一种makefile的程序段有些特殊,这就是伪目标,伪目标简而言之就是对生成最后目标没有影响的target,比如清除工程中编译器自动产生的一些文件。
makefile也可以定义变量,使用”变量名=值“即可声明一个变量,在引用这个变量时可以使用$(变量名)来进行引用。
makefile中的注释使用#,如果依赖文件很长,可以使用‘\’进行转行功能。
makefile简单介绍的更多相关文章
- MATLAB---make与makefile简单介绍
1 make.makefile概述 makefile定义了一系列的规则,来规定哪些部分先编译,哪些部分后编译,写好makefile以后,只需一个make命令就可以让整个工程完全自动编译,所以简单的说, ...
- makefile 简单介绍
使用与来源: makefile文件(可由./configure创建)被make命令读取,make 命令执行时,需要一个 Makefile 文件,以告诉 make 命令需要怎么样的去编译和链接程序. 功 ...
- Linux 内核开发—内核简单介绍
内核简单介绍 Linux 构成 Linux 为什么被划分为系统空间和内核空间 隔离核心程序和应用程序,实现对核心程序和数据的保护. 什么内核空间,用户空间 内核空间和用户空间是程序执行的两种不同的状态 ...
- CMake 简单介绍 图
http://tech.uc.cn/?p=914 CMake特点 CMake需要用户用CMake规范的语法编写CMake脚本,该语法简单易用,入门极其顺手 原生支持 C/C++/Fortran ...
- CMake 简单介绍
CMake特点 CMake需要用户用CMake规范的语法编写CMake脚本,该语法简单易用,入门极其顺手 原生支持 C/C++/Fortran/Java 的相依性的自动分析功能,免除了程序员对代码依赖 ...
- 覆盖率測试工具gcov的前端工具_LCOV_简单介绍
1.Gcov是进行代码运行的覆盖率统计的工具.它随着gcc的公布一起公布的,它的使用也非常easy,须要在编译和链接的时候加上-fprofile-arcs -ftest-coverage生成二进制文件 ...
- [原创]关于mybatis中一级缓存和二级缓存的简单介绍
关于mybatis中一级缓存和二级缓存的简单介绍 mybatis的一级缓存: MyBatis会在表示会话的SqlSession对象中建立一个简单的缓存,将每次查询到的结果结果缓存起来,当下次查询的时候 ...
- 利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍
一.pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主要目的是为了数据分析.它提供了大量高级的数据结构和对数据处理的方法. pandas 有两个主要的数据结构 ...
- 利用Python进行数据分析(4) NumPy基础: ndarray简单介绍
一.NumPy 是什么 NumPy 是 Python 科学计算的基础包,它专为进行严格的数字处理而产生.在之前的随笔里已有更加详细的介绍,这里不再赘述. 利用 Python 进行数据分析(一)简单介绍 ...
随机推荐
- maven src/test/resources 下的logback-test.xml 读取 properties文件中的key-value值
<profiles> <profile> <id>test-cd</id> <prope ...
- Period - HDU 1358(next求循环节)
题目大意:有一个长N的字符串,如果前缀Ni是一个完全循环的串(循环次数大于1),输出Ni和它循环了多少次. 分析:输入next的应用,求出来next数组直接判断Ni是否是完全的循环就行了,也就是N ...
- poj3122
题目大意:馅饼(看起来像是一个简单点的题目啊,嘎嘎,希望是的吧) 我的生日即将来临按照习惯我将准备馅饼,不是一个馅饼,我有N块馅饼,有各种各样的味道和尺寸,当我的朋友来参加我的聚会平且他们都能得到一块 ...
- SCOI2014 方伯伯的OJ onlinejudge
终于用自己的方法水过去了. 本地测慢的一组要三四秒,一共要十几秒,BZOJ貌似一共只让跑6s,于是就还T着的. 一开始没看n<=1e8,想的直接splay+map(splay维护名次,map维护 ...
- Android 网络框架--Retrofit
1.导入Jar包 compile 'com.google.code.gson:gson:2.8.0' compile 'com.squareup.retrofit2:retrofit:2.1.0' c ...
- android核心服务初探
终于进入android学习的进阶阶段,第一个课题是android的核心服务.首先,让我们来认识一下核心服务. android核心服务与app服务有所区别.app服务继承自Service基类,在app运 ...
- 【转】iOS中流(Stream)的使用
转自:http://southpeak.github.io/blog/2014/07/17/ioszhong-liu-stream-de-shi-yong/流提供了一种简单的方式在不同和介质中交换数据 ...
- Python开发【第一篇】:目录
本系列博文包含 Python基础.前端开发.Web框架.缓存以及队列等,希望可以给正在学习编程的童鞋提供一点帮助!!! Python开发[第一篇]:目录 Python开发[第二篇]:初识Python ...
- Sniffer抓包教程
上网络信息安全的时候用了下,中途出现了一堆奇葩的事,这里就不提了... 上教程: 先把虚拟机里面的防火墙给关了,主机防火墙也关了 之前由于ip自己设置了,然后一直ping不通,后面把ip改成自动获取就 ...
- 关于asp.net程序连接不了ORACLE数据库而PL/SQL可以连接的问题
今天在发布ASP.NET WEB网站时发现程序连接不了数据 报“ORA-12154: TNS: 无法解析指定的连接标识符”的错误,但PL/SQL连接又没有问题.真莫名其秒.在百度找了好多相关的问题.都 ...