[编译] 1、第一个makefile简单例子

简介:


 

前言

本篇用一个最简单的例子引入makefile,教你编写第一个makefile

 

正文

在Download/aa文件夹下有a.c和makefile文件

1 litao@litao:~/Downloads/aa$ ls
2 a.c  makefile

其中a.c为:

复制代码
 1 #include<stdio.h>
 2 int main()
 3 {
 4   int i,j;
 5   for(i=0;i<10;i++)
 6   {
 7         for(j=2*i+1;j>0;j--)
 8         {
 9                 printf("#");
10         }
11         printf("\n");
12   }
13 }
复制代码

其中makefile为:

其格式为:

复制代码
 1 a:a.o                   #linK
 2         gcc a.o -o  a
 3 a.o:a.s                 #汇编Assembling
 4         gcc -c a.c -o a.o 
 5 a.s:a.i                 #编译
 6         gcc -S a.i -o a.s
 7 a.i:a.c                 #pre-processing
 8         gcc -E a.c -o a.i
 9 
10 
11 run:
12         ./a
13 clear:
14         rm -rf a.o a.s a.i a
复制代码

 

makefile文件的基本单元是规则。一条规则指定一个或多个目标文件,目标文件后面跟的是编译生成该目标文件所依赖的文件或模块,最后是生成或更新目标文件所用的命令。格式如下:

其中[]中的内容是可选的。

上面第1、2行构成一个规则~

特别注意生成目标文件所用命令必须以Tab键开头(如果某一行以tab键开头,make就认为是命令)

在依赖文件列表后面加一个;号可以跟命令,如下:

 

11、12行是什么鬼?

是伪目标!

在makefile文件中,目标文件可以分为两类:实目标和伪目标。实目标文件是真正要生成的、以文件的形式存放在硬盘上的目标。伪目标不要求生成实际文件,而是为了让make执行一些辅助命令,如打印一些信息、删除无用中间文件等,这里的run是运行生成a程序,clear是清除所有生成文件~

 

效果如下:



本文转自beautifulzzzz博客园博客,原文链接:http://www.cnblogs.com/zjutlitao/p/5081291.html,如需转载请自行联系原作者

 

相关文章
|
7月前
|
Ubuntu 网络安全 C语言
vscode 编译多个当前目录下cpp文件,报错未定义标识符的问题
vscode 编译多个当前目录下cpp文件,报错未定义标识符的问题
441 0
|
C语言 C++
第一个C程序
第一个C程序
124 0
第一个C程序
|
Web App开发 C++
CMake 入门2/5:第一个程序 helloworld
在 CMake 入门1/5:基于阿里云 ECS搭建体验环境,我们搭建了 CMake的运行环境,下面我们以 helloworld 为例,体验 CMake 工作的基本流程。 1 源文件说明 共包含2个文件,一个 c++文件 helloworld.cpp,另一个是CMakeLists.txt。
1167 0
|
C语言 编译器 程序员
|
vr&ar Shell
从头开始写项目Makefile(十):make内嵌函数及make命令显示【转】
转自:http://blog.csdn.net/shallnet/article/details/38314473#comments 版权声明:本文为博主原创文章,未经博主允许不得转载。如果您觉得文章对您有用,请点击文章下面“顶”。
1203 0