1 .inf文件

以下面 .inf文件为例

[Defines]     # 块用于定义模块的属性和其他变量,块内定义的变量可被其他块引用
INF_VERSION = 0x00010006 #INF 标准的版本号, 前半部分主版本号,后半次版本号
BASE_NAME = Main #模块名字字符串,不能包含空格。它通常也是输出文件的名字 Main.efi
FILE_GUID = 4ea97c46-7491-4dfd-b442-747010f3ce5f#每个工程文件必须有一个8-4-4-4-12格式的GUID,用于生成固件
MODULE_TYPE = UEFI_APPLICATION # 定义模块的模块类型
VERSION_STRING = 0.1 # 模块的版本号字符串
ENTRY_POINT = ShellCEntryLib # 定义模块的入口函数 [Sources] # 用于列出模块的所有源文件和资源文件。 可选项体系结构相关块
Main.c # 块内每一行表示一个文件,根路径是工程文件所在的目录 [Packages] # 列出本模块引用到的所有包的包声明文件(.dec 文件)。
StdLib/StdLib.dec
MdePkg/MdePkg.dec
ShellPkg/ShellPkg.dec # 文件使用相对路径,相对路径的根路径为EDK2的根目录 [LibraryClasses] #块列出本模块要链接的库模块
LibC
LibStdio # 块内每一行声明一个要链接的库(库定义在包的.dsc 文件中,定义方法将在下文讲述

inf文件是模块的工程文件,其作用相当于Makefile 文件或Visual Studio 的.proj 文件,用于指导EDK2 编译工具自动编译模块;

工程文件分为多个块,每个块以“[ 块名]”开头,“[ 块名]”必须单独占一行。块又分为 工程文件必需块 和 工程文件非必需块

必需块 块描述
[Defines] 定义本模块的属性变量及其他变量,这些变量可在工程文件其他块中引用
[Sources] 列出本模块的所有源文件及资源文件
[Packages] 列出本模块引用到的所有包的包声明文件。可能引用到的资源包括头文件、GUID、Protocol 等,这些资源都声明在包的包声明文件.dec 中
[LibraryClasses] 列出本模块要链接的库模块
非必需块 块描述
[Protocols] 列出本模块用到的Protocol
[Guids] 列出本模块用到的GUID
[BuildOptions] 指定编译和链接选项
[Pcd] Pcd 全称为平台配置数据库(Platform Conf iguration Database)。
[Pcd] 用于列出本模块用到的Pcd 变量,这些Pcd 变量可被整个UEFI 系统访问
[PcdEx] 用于列出本模块用到的Pcd 变量,这些Pcd 变量可被整个UEFI 系统访问
[FixedPcd] 用于列出本模块用到的Pcd 编译期常量
[FeaturePcd] 用于列出本模块用到的Pcd 常量
[PatchPcd] 列出的Pcd 变量仅本模块可用

2 .dsc文件

.inf 用于编译一个模块, 而.dsc 文件用于编译一个Package, 它包含了[Defines]、

[LibraryClasses]、[Components] 几个必需部分以及[PCD]、[BuildOptions] 等几个可选部分。

3 .dec 文件

.dec 文件定义了公开的数据和接口,供其他模块使用。它包含了必需区块[Defines] 以及可选区块[Includes]、[LibraryClasses]、[Guids]、[Protocols]、[Ppis] 和[PCD] 几个部分。

.dec文件需要被调用模块.inf文件所包含。

UEFI原理与编程(四)(dec dsc inf文件)的更多相关文章

  1. 【读书笔记】UEFI原理与编程(1)概述及开发环境的搭建

    一.概述: 0.为什么会有这篇文章 说实在的,在2016初的时候,我就萌生了写一个操作系统的念头,但是这对于我一个菜鸟来说,犹如登天. 既然想了就去写,即使最后做不完,也不后悔. 抱着这样的念头,我开 ...

  2. (四) 一起学 Unix 环境高级编程(APUE) 之 系统数据文件和信息

    . . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...

  3. WebSocket原理与实践(四)--生成数据帧

    WebSocket原理与实践(四)--生成数据帧 从服务器发往客户端的数据也是同样的数据帧,但是从服务器发送到客户端的数据帧不需要掩码的.我们自己需要去生成数据帧,解析数据帧的时候我们需要分片. 消息 ...

  4. Contiki源码+原理+功能+编程+移植+驱动+网络(转)

    源:Contiki源码+原理+功能+编程+移植+驱动+网络 请链接:http://www.rimelink.com/nd.jsp? id=31&_np=105_315 假设您对于用Contik ...

  5. trident原理及编程指南

    目录 trident原理及编程指南 一.理论介绍 1.trident是什么? 2.trident处理单位 3.事务类型 二.编程指南 1.定义输入流 2.统计单词数量 3.输出统计结果 4.split ...

  6. Vue双向绑定的实现原理系列(四):补充指令解析器compile

    补充指令解析器compile github源码 补充下HTML节点类型的知识: 元素节点 Node.ELEMENT_NODE(1) 属性节点 Node.ATTRIBUTE_NODE(2) 文本节点 N ...

  7. 数据库系统原理之SQL(四)

    数据库系统原理之SQL(四) 1. 数据更新 插入数据 INSERT-VALUES语句 #插入多条数据 insert [into] table_name (column_name,...) value ...

  8. shell 编程四剑客简介 find sed grep awk(微信公众号摘抄)

    一,Shell编程四剑客之Find 通过如上基础语法的学习,读者对Shell编程有了更近一步的理解,Shell编程不再是简单命令的堆积,而是演变成了各种特殊的语句.各种语法.编程工具.各种命令的集合. ...

  9. 超级干货:动态防御WAF技术原理及编程实战!

    本文带给大家的内容是动态防御WAF的技术原理及编程实战. 将通过介绍ShareWAF的核心技术点,向大家展示动态防御的优势.实现思路,并以编程实战的方式向大家展示如何在WAF产品开发过程中应用动态防御 ...

  10. RocketMQ架构原理解析(四):消息生产端(Producer)

    RocketMQ架构原理解析(一):整体架构 RocketMQ架构原理解析(二):消息存储(CommitLog) RocketMQ架构原理解析(三):消息索引(ConsumeQueue & I ...

随机推荐

  1. CMake学习(一)

    CMake学习(一) 1.简介 CMake是一个强大的软件构建系统,可以用简单的语句来描述所有平台的安装(编译过程) 可以编译源代码.制作程序库.产生适配器(wrapper).还可以用任意的顺序建构执 ...

  2. Dubbo日志链路追踪TraceId选型

    一.目的 开发排查系统问题用得最多的手段就是查看系统日志,但是在分布式环境下使用日志定位问题还是比较麻烦,需要借助 全链路追踪ID 把上下文串联起来,本文主要分享基于 Spring Boot + Du ...

  3. Jmeter函数助手27-urlencode

    urlencode函数用于将字符串进行application/x-www-form-urlencoded编码格式化. String to encode in URL encoded chars:填入字 ...

  4. iOS开发基础144-逐字打印效果

    在AIGC类的APP中,实现那种一个字一个字.一行一行地打印出文字的效果,可以通过多种方法来实现.下面是一些实现方法,使用Swift和OC来举例说明. OC版 1. 基于定时器的逐字打印效果 可以使用 ...

  5. 第九讲: MySQL为什么有时候会选错索引?

    第九讲: MySQL为什么有时候会选错索引? ​ 前面我们介绍过索引,你已经知道了在 MySQL 中一张表其实是可以支持多个索引的. ​ 但是,你写 SQL 语句的时候,并没有主动指定使用哪个索引.也 ...

  6. 【Redis】04 配置文件分析

    配置文件Redis.conf注释信息: 1.启动项: 启动Redis要求必须加上配置文件redis.conf路径作为第一参数加载 文档样例: ./redis-server /path/to/redis ...

  7. 英语表达中address和solve的区别

    "Address" 和 "solve" 都表示处理问题,但在具体用法和含义上有所不同: Address: 含义: 处理.应对.讨论或提及问题. 强调: 关注并开 ...

  8. Python使用pynvml查看GPU信息

    参考: https://blog.csdn.net/TracelessLe/article/details/107405544 ==================================== ...

  9. Apache SeaTunnel社区5月月报更新!

    各位热爱 SeaTunnel 的小伙伴们,社区 5 月份月报来啦! SeaTunnel 正在迅猛发展,积极投入社区项目建设的小伙伴将促进SeaTunnel不断提升数据同步的高可扩展性.高性能及高可靠性 ...

  10. zuul集成apollo动态刷新配置

    zuul集成apollo实现路由配置的动态刷新 import com.ctrip.framework.apollo.model.ConfigChangeEvent; import com.ctrip. ...