目标文件: 依赖文件
[Tab] 命令
目标文件:此规则中要生成的目标文件
依赖文件:此规则中要生成目标文件所要使用的文件
命令:此规则中要执行的动作(shell命令)
以上规则的意义是:要想生成目标文件,需要提前准备好依赖文件,若依赖文件列表中任一文件比目标文件新,则去执行规则中的命令
文件更新时间:
atime:读取文件数据的时间
ctime:文件数据或数据的改变时间
mtime:文件数据部分的修改时间(make语法中的命令执行参考该时间)
stat 文件名:查看上述三种时间数据
make 目标文件:执行指定目标文件处的语法
make:从上至下执行语句
当未指定使用的makefile文件时,会默认搜索名为makefile的文件
make:递归式推导目标
在makefile中的目标,是以递归方式逐层向上查找目标的,这一点能在多个目标相互依赖的情况下得到体现
伪目标:当规则中不存在依赖文件时该目标文件就是伪目标,此时命令的执行不依赖于更新时间,而是直接执行
伪目标不能和真实目标文件同名,为了避免同名的情况,可使用".PHONY"来修饰为目标,格式为".PHONY:伪目标名"
常用手法:用于删除编译过程中产生的.o文件
.PHONY:clean
clean:
rm ./build/*.o
常用伪目标名称:
自定义变量:
变量定义格式:变量名=值(字符串),多个值之间使用空格分开
变量引用格式:$(变量名)
系统变量:
在行尾添加反斜杠字符,则下一行的内容与反斜杠所在行同属一行
使用#表示注释,若行尾含有反斜杠,则下一行也被注释
自动化变量:
make还支持一种自动化变量,此变量代表一组文件名
$@:表示规则中的目标文件集合
$<:表示依赖文件中的第1个文件
$^:表示所有的依赖文件
$?:表示所有比目标文件mtime更新的依赖文件
模式规则:
%用来匹配多个非空字符串,make会在当前路径进行模式匹配
随着模块越来越多,程序出错的概率越来越大,为了方便调试在程序的关键部分设置"哨兵",让它来监督数据的正确性
百度网盘链接:https://pan.baidu.com/s/1U8Gb0PZazvxFLJNIyHMizQ
提取码:dz4f
./bochs/bin/bochs -f bochs/boot.disk
系统信息(ards信息)位于0x500
mbr.s位于0x7C00~0x7E00,占用0.5KB
loader.s位于0x2000~0x2800,占用2KB
页目录表位于0x100000~0x101000,占用4KB
缓冲区位于0x70000~0x100000,占用192KB
内核位于0x3000
百度网盘链接:https://pan.baidu.com/s/17IOgSbbumSr6acTMC50FYg
提取码:6rez
./bochs/bin/bochs -f bochs/boot.disk
系统信息(ards信息)位于0x500
mbr.s位于0x7C00~0x7E00,占用0.5KB
loader.s位于0x2000~0x2800,占用2KB
页目录表位于0x100000~0x101000,占用4KB
缓冲区位于0x70000~0x100000,占用192KB
内核位于0x3000
百度网盘链接:https://pan.baidu.com/s/1g1yCouZksePsKNpSaYSXTQ
提取码:koka
书中将位图放置于0x9F000,但在我的机器上此段内存不可用
于是我将位图放置于0x8F000
内存分布如下:
系统信息(ards信息)位于0x500
mbr.s位于0x7C00~0x7E00,占用0.5KB
loader.s位于0x2000~0x2800,占用2KB
内核位于0x3000
位图位于0x8F000
页目录表位于0x100000~0x101000,占用4KB
缓冲区位于0x70000~0x100000,占用192KB
百度网盘链接:https://pan.baidu.com/s/1IO3KNknUOA8QL2q6S3tHGA
提取码:8z4d
./bochs/bin/bochs -f bochs/boot.disk
系统信息(ards信息)位于0x500
mbr.s位于0x7C00~0x7E00,占用0.5KB
loader.s位于0x2000~0x2800,占用2KB
内核位于0x3000
位图位于0x8F000
页目录表位于0x100000~0x101000,占用4KB
缓冲区位于0x70000~0x100000,占用192KB
百度网盘链接:https://pan.baidu.com/s/1vWUCpGoVHA5Hpvz8CMDUfQ
提取码:o6l4
./bochs/bin/bochs -f bochs/boot.disk
系统信息(ards信息)位于0x500
mbr.s位于0x7C00~0x7E00,占用0.5KB
loader.s位于0x2000~0x2800,占用2KB
内核位于0x3000
位图位于0x8F000
页目录表位于0x100000~0x101000,占用4KB
缓冲区位于0x70000~0x100000,占用192KB
下一篇:Modelsim 操作结构和流程