Makefile: $^ $^ $@ 与 ..c.o

转载 2011年04月11日 10:07:00

Makefile: $^ $^ $@ 与 ..c.o

2010-05-16 15:19

gcc -c main.c 

gcc -c mytool1.c 

gcc -c mytool2.c 

gcc -o main main.o mytool1.o mytool2.o

 

/****第1个Makefile**************************************************************************************************/

 

Makefile文件 

main:main.o mytool1.o mytool2.o 

gcc -o main main.o mytool1.o mytool2.o 

main.o:main.c mytool1.h mytool2.h 

gcc -c main.c 

mytool1.o:mytool1.c mytool1.h 

gcc -c mytool1.c 

mytool2.o:mytool2.c mytool2.h 

gcc -c mytool2.c

 

/******************************************************************************************************/

 

 

Makefile中也#开始的行都是注释行.Makefile中最重要的是描述文件的依赖关系的说

明.一般的格式是:

 

target: components 

TAB rule

 

Makefile有三个非常有用的变量.分别是$@,$^,$<代表的意义分别是:

$@--目标文件,$^--所有的依赖文件

,$<--第一个依赖文件.

如果我们使用上面三个变量,那么我们可以简化我们的

Makefile文件为:

 

/**第2个Makefile****************************************************************************************************/

 

# 这是简化后的

Makefile

main:main.o mytool1.o mytool2.o

gcc -o $@ $^

main.o:main.c mytool1.h mytool2.h

gcc -c $<

mytool1.o:mytool1.c mytool1.h

gcc -c $<

mytool2.o:mytool2.c mytool2.h

gcc -c $<

 

/******************************************************************************************************/

 

经过简化后我们的Makefile是简单了一点,不过人们有时候还想简单一点.这里我们学习一个Makefile的缺省规则

 

..c.o:

gcc -c $<

 

这个规则表示所有的 .o文件都是依赖与相应的.c文件的.例如

 

mytool.o依赖于mytool.c

 

这样 Makefile还可以变为:

 

 

/**第3个Makefile****************************************************************************************************/

 

Makefile 

main:main.o mytool1.o mytool2.o 

gcc -o $@ $^ 

..c.o: 

gcc -c $<

 

/******************************************************************************************************/

相关文章推荐

makefile 中 $@ $^ %< 使用

这篇文章介绍在LINUX下进行C语言编程所需要的基础知识。在这篇文章当中,我们将会学到以下内容: 源程序编译 Makefile的编写 程序库的链接 程序的调试 头文件和系...

makefile .c.o的说明

假设我们有下面这样的一个程序,源代码如下: /* main.c */ #include "mytool1.h" #include "mytool2.h" int main(int argc,char ...

Makefile编译目录下多个文件以及函数wildcard用法

编译多个c文件一般有两个功能,一个是每个c文件都有main函数,就是说每个c文件的可执行文件是独立的,各自是各自的;第二个是多个c文件用来编译成一个可执行文件。 首先说第一个,内容如...

《Linux内核Makefile分析》之 if_changed_rule/cc_o_c/any-prereq/arg-check

http://blog.sina.com.cn/s/blog_87c063060101l25q.html if_changed_rule/cc_o_c/any-prereq/...
  • zxygww
  • zxygww
  • 2015年12月10日 14:35
  • 390

静态模式makefile中$(cobjs): $(obj)/%.o: $(src)/%.c

4.12 静态模式 静态模式规则是这样一个规则: 规则存在多个目标, 并且不同的目标可以根据目标 文件的名字来自动构造出依赖文件。 静态模式规则比多目标规则更通用, 它不需要多个 目标具有相同的依赖。...

linux_2.6.30.4_Makefile_7--obj-y中将.c编译为.o流程 (2012-05-06 21:03)

标签:  linux_2.6.30.4_Make  obj-y中将.c编译为.o  分类: Linux_内核 先去编译obj-y,以init下的obj-y为例: o...

Makefile中的-Wall -O2 -Os -g等选项介绍

-Wall:选项可以打印出编译时所有的错误或者警告信息。这个选项很容易被遗忘,编译的时候,没有错误或者警告提示,以为自己的程序很完美,其实,里面有可能隐藏着许多陷阱。变量没有初始化,类型不匹配,或者类...

makefile中关于all和.PHONY .cpp.o

转自:http://blog.163.com/benben_long/blog/static/199458243201110230292490/ 请编写一个makefile同时编译、链接下面两个...

Error in invoking target 'mkldflags ntcontab.o nnfgt.o' of makefile '.../ins_net_client.mk'--68%问题

最近我在RHEL6.1上安装oracle11gR2时总是碰见如题说示的错误,在网上查了很多资料但都未能解决。 网上都说是gcc版本问题或者gcc的包没有装全,但没有给出正确的gcc安装方法。这里转载...
  • paullmq
  • paullmq
  • 2013年02月04日 16:01
  • 12860

Linux: gcc and gcc -O2, configure, make, make install and makefile, sed

GCC:  Gcc is a cross-platform complier. It can be run on windows and linux and so on. As it has be...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Makefile: $^ $^ $@ 与 ..c.o
举报原因:
原因补充:

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