Makefile 工程管理
Makefile 工程管理
Makefile 规则 --变量
在Makefile中,用户除了可以自己定义变量外,还可以使用存在系统已经定义好的默认变量
$^:代表所有的依赖文件
$@:代表目标
$<:代表第一个依赖文件
Makefile使用技巧
--去回显
Makefile 中“#”字符后的内容被视作注释
@:取消回显
使用技巧 – 文件名
Make命令默认在当前目录下寻找名字为Makefile或者makefile的工程文件,当名字部位这两者之一时,可以使用如下方法指定:
make –f 文件名
结构化Makefile文件的编写
顶层Makefile
OBJS: = start.o main.o mem.o dev/dev.o lib/lib.o
CFLAGS: = -fno-builtin –I$(shell pwd)/include
export CFLAGS
gboot.bin : gboot.elf
arm-linux-objcopy –O binary gboot.elf gboot.bin
boot.elf : $(OBJS)
arm-linux-ld-Tgboot.lds –o gboot.elf $^
%.o : %s
arm-linux-gcc –g –c $^
lib/lib.o
make –C lib all
dev/dev.o
make –C dev all
.PHONY:clean
clean:
rm *.o *.elf *.bin
make –C lib clean
make –C dev clean
dev文件夹的Makefile
objs:= button.o interrupt.o led.o nandflash.o uart.o
all:$(objs)
arm-linux-ld –r –o dev.o $^
%.o : %.c
arm-linux-gcc ${CFLAGS} –C $^
%.o:%.S
arm-linux-gcc ${CFLAGS} –C $^
clean:
rm –f *.o
lib文件夹中的Makefile跟dev文件夹中的Makefile基本一样,就是objs后面的不一样
Makefile 工程管理的更多相关文章
- ARM裸机开发之交叉工具链和MakeFile工程管理
一.交叉工具链 嵌入式Linux开发采用交叉开发,简单来说就是在宿主机(PC机)上面编译出能够在其他硬件平台上面运行的程序.在这个过程中,需要用到许多的交叉工具,这些交叉工具的集合就叫做交叉工具链.下 ...
- Makefile工程管理器及万能模板
Linux 环境下的程序员如果不会使用GNU make来构建和管理自己的工程,应该不能算是一个合格的专业程序员,至少不能称得上是 Unix程序员.在 Linux(unix )环境下使用GNU 的m ...
- 1-3 编程基础 makefile工程管理
GNU make Linux程序员必须学会使用GNU make来构建和管理自己的软件工程.GNU的make能够使整个工程的编译.链接只需要一个命令就可以完成. makefile make在执行时,需要 ...
- 6、GNU makefile工程管理学习的一个例子
在之前我们已经学习了一个文件的编译过程,但是做过项目的都知道,一个工程中的源文件不计其数,其按类型.功能.模块会分别放在若干个目录中,而这些文件如何编译就需要有一个编译规则,虽然现在很多大型的项目都是 ...
- linux应用程序设计--Makefile工程管理
Makefile文件描述了整个工程的编译.链接等规则.包括:工程中哪些源文件需要编译以及如何编译:需要创建哪些库文件以及如何创建这些库文件.如何产生最终的可执行文件. Makefile相关术语 1.规 ...
- 1.3 Makefile 工程管理
1. 为什么得用Makefile 单步命令生成led.bin [root@cfm880 lesson1]# cd .. [root@cfm880 Part1]# mkdir lesson3 [root ...
- makefile工程管理
个人理解吧,makefile就是写一个指定格式的文件,将一系列的编译.链接.转换等操作打包在一起,方便以后一键生成可执行的二进制文件而产生的.下面记录一下这种文件的写法,方便以后忘了来查询. make ...
- [国嵌笔记][017][Makefile工程管理]
Makefile的用途 1.make能够使整个程序的编译.链接只需一个命令就可以完成 2.make的工作主要依赖于Makefile的文件.Makefile文件描述了整个程序的编译.链接等规则,使之自动 ...
- 学习总结:工程管理与makefile
工程管理与makefile 一.为什么需要makefile和make 一个工程中的源文件可能很多,按照类型.功能.模块分别放在若干个目录中,为了有效地管理软件工程,更高效地编译整个工程,需要用到mak ...
随机推荐
- sqlite创建数据库问题
1.<Sqlite权威指南>上说是这么创建数据库的: sqlite3 test.db 但是我写了这条语句之后出现了下面的情况(注:安装Sqlite过程见 ...) 我的sqlite3放在 ...
- (转)HTTP 无法注册 URL http://+:9999/CalculatorService/。进程不具有此命名空间的访问权限
写WCF时在 1 host.Open(); 报错:HTTP 无法注册 URL http://+:9999/CalculatorService/.进程不具有此命名空间的访问权限(有关详细信息,请参见 h ...
- .net 2.0中半角全角错误的解决办法
VS2005中.net 2.0编译报错如下所示:'System.Windows.Forms.ImeMode' does not contain a definition for 'OnHalf'.只需 ...
- PHP上传文件DEMO
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"> <html> <head> ...
- BZOJ 1001 狼抓兔子 (网络流最小割/平面图的对偶图的最短路)
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1001 算法讨论: 1.可以用最大流做,最大流等于最小割. 2.可以把这个图转化其对偶图,然 ...
- jquery validate form 异步提交
jQuery取得select选中的值 jQuery("#select1 option:selected").text(); 相信很多人都用过jquery validate插件,非 ...
- 解决django关于图片无法显示的问题
http://python.usyiyi.cn/django/index.html http://m.blog.csdn.net/blog/qingyuanluofeng/44877399 http: ...
- 利用java反射机制对方法进行调用
http://blog.csdn.net/coolcoffee168/article/details/5835143
- [FML]学习笔记一Cross-validation交叉验证
在实际的工程中,有时labeled data的数量不足以留出validation sample(验证样本)否则会导致training sample(训练样本)的数量太少.为了解决这个问题,我们引入一种 ...
- linux tar使用
Linux tar指令简单使用 -c:创建包,-x:解压或解包(-c和-x可理解为互逆运算),-t:查看包 -f:后加处理文件,必须放在参数组合的最后一位(tar -cf a.tar 1.tx ...