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 工程管理的更多相关文章

  1. ARM裸机开发之交叉工具链和MakeFile工程管理

    一.交叉工具链 嵌入式Linux开发采用交叉开发,简单来说就是在宿主机(PC机)上面编译出能够在其他硬件平台上面运行的程序.在这个过程中,需要用到许多的交叉工具,这些交叉工具的集合就叫做交叉工具链.下 ...

  2. Makefile工程管理器及万能模板

    ​ Linux 环境下的程序员如果不会使用GNU make来构建和管理自己的工程,应该不能算是一个合格的专业程序员,至少不能称得上是 Unix程序员.在 Linux(unix )环境下使用GNU 的m ...

  3. 1-3 编程基础 makefile工程管理

    GNU make Linux程序员必须学会使用GNU make来构建和管理自己的软件工程.GNU的make能够使整个工程的编译.链接只需要一个命令就可以完成. makefile make在执行时,需要 ...

  4. 6、GNU makefile工程管理学习的一个例子

    在之前我们已经学习了一个文件的编译过程,但是做过项目的都知道,一个工程中的源文件不计其数,其按类型.功能.模块会分别放在若干个目录中,而这些文件如何编译就需要有一个编译规则,虽然现在很多大型的项目都是 ...

  5. linux应用程序设计--Makefile工程管理

    Makefile文件描述了整个工程的编译.链接等规则.包括:工程中哪些源文件需要编译以及如何编译:需要创建哪些库文件以及如何创建这些库文件.如何产生最终的可执行文件. Makefile相关术语 1.规 ...

  6. 1.3 Makefile 工程管理

    1. 为什么得用Makefile 单步命令生成led.bin [root@cfm880 lesson1]# cd .. [root@cfm880 Part1]# mkdir lesson3 [root ...

  7. makefile工程管理

    个人理解吧,makefile就是写一个指定格式的文件,将一系列的编译.链接.转换等操作打包在一起,方便以后一键生成可执行的二进制文件而产生的.下面记录一下这种文件的写法,方便以后忘了来查询. make ...

  8. [国嵌笔记][017][Makefile工程管理]

    Makefile的用途 1.make能够使整个程序的编译.链接只需一个命令就可以完成 2.make的工作主要依赖于Makefile的文件.Makefile文件描述了整个程序的编译.链接等规则,使之自动 ...

  9. 学习总结:工程管理与makefile

    工程管理与makefile 一.为什么需要makefile和make 一个工程中的源文件可能很多,按照类型.功能.模块分别放在若干个目录中,为了有效地管理软件工程,更高效地编译整个工程,需要用到mak ...

随机推荐

  1. 如何解决DE0-Nano的EPCS16 无法下载的问题:NO EPCS LAYOUT DATA --- LOOKING FOR SECTION [EPCS-XXXXXX]

    在用NIOS的flashprogram对EPCSx进行烧录程序时,出现了No EPCS layout data --- looking for section [EPCS-XXXXXX]的错误,在网上 ...

  2. .NET基础拾遗(5)反射1

    1.反射产生的背景 对无法直接添加引用的程序集中类型元素的动态获取和使用.使用场景如插件开发,vs本身的智能提示. 2.反射的基本原理 依托于元数据,运行时动态获取并构建程序集.模块.类型及字段等目标 ...

  3. encodeURI与encodeURIComponent的区别

    webservice输出时选择的格式与Content-Type报文头有关 encodeURI与encodeURIComponent的区别:后者会将URI进行编码(包括"://")

  4. await与async的简单了解

    异步方法的返回类型可以为Task.Task.void.方法不能声明ref或out参数. 无法捕捉返回类型为void的异步方法引发的异常,如果返回Task或Task的异步方法中出现异常,则在任务等待时将 ...

  5. IOS 代码管理工具

    代码管理工具国内主要用的是SVN 国外主要是Git

  6. iOS在MRC工程环境下下使用ARC的方法

  7. 探索A@1db9742

    public class S { /**   * @param args   */ public static void main(String[] args) { System.out.printl ...

  8. 慕课linux学习笔记(八)常用命令(5)

    解压缩命令 常用压缩格式 .zip .gz .bz2 .tar.gz .tar.bz2 zip [压缩文件名] [ 原文件 ] #压缩文件 -r [压缩文件名] [ 源目录] #压缩目录 -r [压缩 ...

  9. jquery交替实现隐藏、显示

      <html>   <head>   <title></title>   </head>   <script src="j ...

  10. javaweb分页思想

    web上的分页分析   在web编写中的经常会遇到,数据需要分页的情况.当数据量不是很大的时候.   可以直接使用js来分页.可以很好的提高性能.简化代码.数据量大的时候.还是需要使用java的分页类 ...