makefile的含义与用途

转载 2004年07月21日 14:30:00
makefile是用于自动编译和链接的,一个工程有很多文件组成,每一个文件的改变都会导致工程的重新链接-----但是不是所有的文件都需要重新编译,makefile能够纪录文件的信息,决定在链接的时候需要重新编译哪些文件!  
 
在unix系统下,makefile是与make命令配合使用的。  
---------------------------------------------------------------  
 
看看Unix编程就会了解一些。VC会自动生成这些东西。  
---------------------------------------------------------------  
 
现在Makefile文件好像用得越来越少了,深入浅出MFC写了。  
---------------------------------------------------------------  
 
举个例子吧,我现在有main.c  、window.c  、model.c  、data.c  4个.c文件和window.h  、model.h  、data.h  3个.h文件。  
main.c是主程序,里面有main()函数。其他的都是模块。  
 
如果要生成最终的可执行文件,要做以下步骤:  
1、分别编译window.c  、model.c  、data.c  、main.c  ,将会得到3个目标文件:window.o  、model.o  、data.o  、main.o  
2、把这4个.o  (在windows下就是.obj)文件链接起来,得到main.out(在windows下就是main.exe)。  
 
那么这些文件就要有逻辑关系,否则编译器不知道怎么编译。  
 
all:main.out  
main.out:main.o  window.o  model.o  data.o  
       gcc  -o  main.out  main.o  window.o  model.o  data.o  
 
#上面的意思是说:  
#all:main.out  
如果想要编译所有:make  all,那么将会生成main.out可执行文件。  
 
#main.out:main.o  window.o  model.o  data.o  
而要生成这个main.out,需要依赖main.o,window.o,model.o,data.o  4个文件。  
 
#        gcc  -o  main.out  main.o  window.o  model.o  data.o  
这句是调用编译器编译,vc用的是cl。变异的时候可以加上很多的参数、定义的宏、链接库路径等。  
 
当然,还没有完呢,这些main.out依赖的这些  .o  怎么来的?  
 
window.o:window.c  window.h  
       gcc  -c  window.c  
 
model.o:model.c  model.h  
       gcc  -c  model.c  
 
data.o:data.c  data.h  
       gcc  -c  data.c  
 
上面的-c参数是指定编译器编译出一个.o文件就可以了,不要再寻找main()函数做链接工作。  
 
这些和到一起,就是一个makefile,当然这些功能还太少,可以加上很多别的项目。但宗旨就是:让编译器知道要编译一个文件需要依赖其他的哪些文件。当那些依赖文件有了改变,编译器会自动的发现最终的生成文件已经过时,而重新编译相应的模块。  
 
现在的VC++真是太好了,不用一个字一个字的去敲Makefile  了。  ^_^

嵌入式 makefile判断语句ifeq

makefile详解 条件判断 二十 使用条件判断  ——————  使用条件判断,可以让make根据运行时的不同情况选择不同的执行分支。条件表达式可以是比较变量的值,或是比较变量和常量的值。 ...
  • skdkjxy
  • skdkjxy
  • 2013年12月02日 14:42
  • 719

Linux下Makefile的编写及四个特殊符号的意义@、$@、$^、$<

我们先看三段C++程序: 一、line1的源码 line1.h #ifndef _LINE_1_H #define _LINE_1_H void line1_print(const char...
  • runfarther
  • runfarther
  • 2015年11月25日 14:47
  • 4673

Makefile 中命令的@,-@,+@符号 作用, 案例分析

make/makefile中的加号+,减号-和at号@的含义 shell 命令 每个目标都可以具有与其关联的一系列 shell 命令,这些命令通常用来创建目标。此脚本中的每一条命令都必须以...
  • elfprincexu
  • elfprincexu
  • 2016年07月12日 10:33
  • 1235

扩展Gcd含义及用途

扩展Gcd的用途:举个样例,一个人一次走 3步 或 5步 求他到 15步的所有方案:Gcd(3,5) = a*3 + b*5 还比如:Poj的青蛙约会 公式:a*x+b*y = Gcd(a,b)...
  • Acceptee
  • Acceptee
  • 2017年03月02日 23:24
  • 138

【嵌入式Linux+ARM】阶段性总结(Makefile & 链接文件)

阶段性总结: 1.arm-linux-ld arm-linux-ld 的 -T 选项用来指定链接地址;
  • scottly1
  • scottly1
  • 2015年02月07日 14:34
  • 1223

sub main 含义与用途

以前看到sub main 时候,不太懂比较模糊,验收学生信息管理系统时师傅提出sub mian是干啥用的,我一时不知道该怎么回答,所以就好好查了一下,主要有两个用途:      1.设置启动窗体 ...
  • u010011371
  • u010011371
  • 2013年08月05日 14:52
  • 1179

make/makefile中的加号+,减号-和at号@的含义

http://www.cnblogs.com/leaven/p/4337628.html http://www.crifan.com/order_make__makefile_in_the_...
  • zxygww
  • zxygww
  • 2015年10月16日 17:47
  • 1023

【C命令行参数】main函数的参数含义

C中的命令行参数又叫位置参数,它可以被传到程序里面,派各种用途 我们先来看main函数的参数 int main( int argc, char *argv[ ], char *envp[ ...
  • dream_1996
  • dream_1996
  • 2017年01月23日 13:58
  • 336

Linux操作系统,各文件夹含义及用途

http://blog.csdn.net/robbie1314520/article/details/5089364  在 Linux系统里面,“分区”,被称作“挂载点”,简单明了的说,...
  • weixin_41586471
  • weixin_41586471
  • 2018年01月07日 13:08
  • 9

linux中各个目录的含义和作用

在了解了每个文件的相关种类与属性,以及了解了如何更改文件属性/权限的相关信息后,再来要了解的就是,为什么每套Linux distributions他们的配置文件啊、执行文件啊、每个目录内放置的咚咚啊,...
  • sinat_16968575
  • sinat_16968575
  • 2014年11月04日 18:06
  • 2232
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:makefile的含义与用途
举报原因:
原因补充:

(最多只允许输入30个字)