一.主引导程序上从之前的几章可以知道,主引导程序的代码量不能超过512字节,但是在实际中我们需要突破512字节的限制突破限制的思路-主引导程序1.完成最基本的初始化工作2.从存储介质中加载程序到内存中3.将控制权交由新加载的程序执行但是在这会出现问题-主引导程序如何加载存储介质中的其它程序?文件系统--存储介质上组织文件数据的方法-主要包含数据区、根目录、FAT2、FAT1、引导扇区如图所示A.文
一.项目的目录结构分析A.项目被划分为多个不同模块1.每个模块的代码用一个文件夹进行管理--文件夹由inc,src,makefille构成2.每个模块的对外函数声明统一放置于common/inc中--如:commom.hxxxfunc.hB.需要打造的编译环境1.编码文件夹在编译时不能被改动2.在编译时自动创建文件夹用于存放编译结果3.编译过程中能够自动生成依赖关系,自动搜索需要的文件4.每个模块
一.隐式规则问题一.PHONY:allall:@echo"command-1"VAR:=testall:@echo"all:$(VAR)"make之后的结果如图所示可以得出的结论是A.makefile中出现同名目标时依赖:所有的依赖将合并在一起,成为目标的最终依赖命令:当多处出现同一目标时,make发出警告;所有之前定义的命令被最后定义的命令取代注意:当使用include关键字包含其他文件时,需要
一.变量与函数的示例示例的要求1.自动生成target文件夹存放可执行文件2.自动生成objs文件夹存放编译生成的目标文件3.支持调试版本的编译选项4.考虑代码的扩展性完成该示例所需的1.$(wildcardpattern)获取当前工作目录中满足pattern的文件或目录列表2.$(addprefix,_name)给名字列表name的每一个名字增加前缀_prefix关键技巧1.自动获取当前目录下的
一.变量的高级主题A.变量值的替换1.使用指定字符(串)替换变量中的后缀字符(串)2.语法格式:$(var:a=b)(将a替换成b)a.替换表达式中不能有任何的空格b.make中支持使用${}对变量进行取值示例src:=a.ccb.ccc.ccobj:=$(src:cc=o)test:@echo"obj=>$(obj)"输出结果由上图可以看出变量值的替换B.变量的模式替换1.使用%保留变量值
一.伪目标的引入a.默认情况下1.make认为目标对应一个文件2.make比较目标文件和依赖文件的新旧关系,决定是否执行命令3.make以文件处理作为第一优先级示例hello.outall:func.omain.ogcc-ohello.outfunc.omain.ofunc.o:func.cgcc-ofunc.o-cfunc.cmain.o:main.cgcc-omain.o-cmain.ccle
makefile重要的三个概念:目标依赖关系命令一make与makefilemake是一个应用程序1.解析源程序之间的依赖关系2.根据依赖关系自动维护编译工作3.执行宿主操作系统中的各种命令makefile是一个描述文件1.定义一系列的规则来指定源文件编译的先后顺序2.拥有特定的语法规则,支持函数定义和函数调用3.能够直接集成操作系统的各种命令两者之间的关系1.makefile中的描述用于指导ma
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号