[编译] 1、第一个makefile简单例子
2015-12-28 00:18
267 查看
前言
本篇用一个最简单的例子引入makefile,教你编写第一个makefile
正文
在Download/aa文件夹下有a.c和makefile文件
其中a.c为:
其中makefile为:
其格式为:
makefile文件的基本单元是规则。一条规则指定一个或多个目标文件,目标文件后面跟的是编译生成该目标文件所依赖的文件或模块,最后是生成或更新目标文件所用的命令。格式如下:
![](http://images2015.cnblogs.com/blog/506370/201512/506370-20151227235330218-1257448406.png)
其中[]中的内容是可选的。
上面第1、2行构成一个规则~
特别注意生成目标文件所用命令必须以Tab键开头(如果某一行以tab键开头,make就认为是命令)
在依赖文件列表后面加一个;号可以跟命令,如下:
![](http://images2015.cnblogs.com/blog/506370/201512/506370-20151228000307874-1521312567.png)
11、12行是什么鬼?
是伪目标!
在makefile文件中,目标文件可以分为两类:实目标和伪目标。实目标文件是真正要生成的、以文件的形式存放在硬盘上的目标。伪目标不要求生成实际文件,而是为了让make执行一些辅助命令,如打印一些信息、删除无用中间文件等,这里的run是运行生成a程序,clear是清除所有生成文件~
效果如下:
本篇用一个最简单的例子引入makefile,教你编写第一个makefile
正文
在Download/aa文件夹下有a.c和makefile文件
litao@litao:~/Downloads/aa$ ls a.c makefile
其中a.c为:
#include<stdio.h> int main() { int i,j; for(i=0;i<10;i++) { for(j=2*i+1;j>0;j--) { printf("#"); } printf("\n"); } }
其中makefile为:
其格式为:
a:a.o #linK gcc a.o -o a a.o:a.s #汇编Assembling gcc -c a.c -o a.o a.s:a.i #编译 gcc -S a.i -o a.s a.i:a.c #pre-processing gcc -E a.c -o a.i run: ./a clear: rm -rf a.o a.s a.i a
makefile文件的基本单元是规则。一条规则指定一个或多个目标文件,目标文件后面跟的是编译生成该目标文件所依赖的文件或模块,最后是生成或更新目标文件所用的命令。格式如下:
![](http://images2015.cnblogs.com/blog/506370/201512/506370-20151227235330218-1257448406.png)
其中[]中的内容是可选的。
上面第1、2行构成一个规则~
特别注意生成目标文件所用命令必须以Tab键开头(如果某一行以tab键开头,make就认为是命令)
在依赖文件列表后面加一个;号可以跟命令,如下:
![](http://images2015.cnblogs.com/blog/506370/201512/506370-20151228000307874-1521312567.png)
11、12行是什么鬼?
是伪目标!
在makefile文件中,目标文件可以分为两类:实目标和伪目标。实目标文件是真正要生成的、以文件的形式存放在硬盘上的目标。伪目标不要求生成实际文件,而是为了让make执行一些辅助命令,如打印一些信息、删除无用中间文件等,这里的run是运行生成a程序,clear是清除所有生成文件~
效果如下:
![](http://images2015.cnblogs.com/blog/506370/201512/506370-20151228001344906-259911040.png)
相关文章推荐
- HTML笔记
- 3D Touch 的实现:
- MFC新手心得体会(外部类访问dlg变量,unicode中cstring转string)
- 建站随笔-互联之家—hulianw.cn
- KVO & KVC & NSNotificationCenter
- Leetcode: Generalized Abbreviation
- mysql数据库修改密码
- JavaScrip——DOM操作(属性操作)
- Climbing Stairs
- Masonry自动计算行高
- vim 文本编辑器
- 捐助android-x86 项目
- C++ iterator 前++ 后++ 效率区别
- 显示转换、隐式转换--精确度、scanf、转义
- Linux netstat命令详解
- CentOS 6.7增加SWAP交换分区
- 程序员要怎样学英语
- 我的一米阳光――老男孩IT教育
- 【Zookeeper可以干什么】
- 【Zookeeper是什么】