UEFI原理与编程(四)(dec dsc inf文件)
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文件)的更多相关文章
- 【读书笔记】UEFI原理与编程(1)概述及开发环境的搭建
一.概述: 0.为什么会有这篇文章 说实在的,在2016初的时候,我就萌生了写一个操作系统的念头,但是这对于我一个菜鸟来说,犹如登天. 既然想了就去写,即使最后做不完,也不后悔. 抱着这样的念头,我开 ...
- (四) 一起学 Unix 环境高级编程(APUE) 之 系统数据文件和信息
. . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...
- WebSocket原理与实践(四)--生成数据帧
WebSocket原理与实践(四)--生成数据帧 从服务器发往客户端的数据也是同样的数据帧,但是从服务器发送到客户端的数据帧不需要掩码的.我们自己需要去生成数据帧,解析数据帧的时候我们需要分片. 消息 ...
- Contiki源码+原理+功能+编程+移植+驱动+网络(转)
源:Contiki源码+原理+功能+编程+移植+驱动+网络 请链接:http://www.rimelink.com/nd.jsp? id=31&_np=105_315 假设您对于用Contik ...
- trident原理及编程指南
目录 trident原理及编程指南 一.理论介绍 1.trident是什么? 2.trident处理单位 3.事务类型 二.编程指南 1.定义输入流 2.统计单词数量 3.输出统计结果 4.split ...
- Vue双向绑定的实现原理系列(四):补充指令解析器compile
补充指令解析器compile github源码 补充下HTML节点类型的知识: 元素节点 Node.ELEMENT_NODE(1) 属性节点 Node.ATTRIBUTE_NODE(2) 文本节点 N ...
- 数据库系统原理之SQL(四)
数据库系统原理之SQL(四) 1. 数据更新 插入数据 INSERT-VALUES语句 #插入多条数据 insert [into] table_name (column_name,...) value ...
- shell 编程四剑客简介 find sed grep awk(微信公众号摘抄)
一,Shell编程四剑客之Find 通过如上基础语法的学习,读者对Shell编程有了更近一步的理解,Shell编程不再是简单命令的堆积,而是演变成了各种特殊的语句.各种语法.编程工具.各种命令的集合. ...
- 超级干货:动态防御WAF技术原理及编程实战!
本文带给大家的内容是动态防御WAF的技术原理及编程实战. 将通过介绍ShareWAF的核心技术点,向大家展示动态防御的优势.实现思路,并以编程实战的方式向大家展示如何在WAF产品开发过程中应用动态防御 ...
- RocketMQ架构原理解析(四):消息生产端(Producer)
RocketMQ架构原理解析(一):整体架构 RocketMQ架构原理解析(二):消息存储(CommitLog) RocketMQ架构原理解析(三):消息索引(ConsumeQueue & I ...
随机推荐
- elasticsearch初步使用学习
通过使用elasticsearch,我们可以加快搜索时间(直接使用SQL的模糊查询搜索耗时会比较久,而且elasticsearch的响应耗时与数据量关系不大) es主要用于存储,计算,搜索数据 依次部 ...
- SpringBoot整合Redis,并处理序列化反序列化问题
1.添加Redis依赖 在项目的pom.xml文件中添加Redis的依赖项.例如,可以使用spring-boot-starter-data-redis依赖项来引入Redis的支持. <depen ...
- 电视家APP会员退款了 —— 网络电视APP的合规性处理
今天打开家里网络电视的时候突然发现"电视家APP"居然无法使用了,随后发现账户关联的银行卡收到退款了,于是好奇的研究了一下这个事情. 由于家里是在农村,闭路电视的图像效果很差,估计 ...
- conda中安装GCC/G++
参考: https://www.5axxw.com/questions/content/h0e4te ========================================== 一般在lin ...
- sublime添加GBK编码格式
1.背景 2.步骤 Tools(工具) ---> Install Package Control...(安装控制包) 点击执行完成后继续下一步: 点击Package Control,随后搜索I ...
- PHP转Go系列 | ThinkPHP与Gin框架之打造基于WebSocket技术的消息推送中心
大家好,我是码农先森. 在早些年前客户端想要实时获取到最新消息,都是使用定时长轮询的方式,不断的从服务器上获取数据,这种粗暴的骚操作实属不雅.不过现如今我也还见有人还在一些场景下使用,比如在 PC 端 ...
- 【牛客刷题】HJ4 字符串分隔
题目链接 这个题目本身基本上是对语言熟悉程度的考察,没有什么别的逻辑可言: package main import ( "fmt" "strings" ) fu ...
- 如何将一个模块文件编译到Linux内核中?
很多粉丝在群里提问,如何把一个模块文件编译到内核中或者独立变异成ko文件.本文给大家详解讲解. 1. 内核目录 Linux内核源代码非常庞大,随着版本的发展不断增加.它使用目录树结构,并且使用Make ...
- 初探 Rust 语言与环境搭建
1. Rust 简介 Rust 的历史 起源:Rust 语言最初由 Mozilla 研究员 Graydon Hoare 于 2006 年开始设计,并于 2009 年首次公开. 开发:Rust 是 Mo ...
- 《黑神话:悟空》神话再现,虚幻引擎与Unity/C#谁更强?
前言 在国产游戏领域,<黑神话:悟空>无疑是一颗耀眼的明星,以独特的艺术风格.深厚的文化底蕴以及卓越的技术表现,赢得了国内外玩家的广泛关注.然而,在这款游戏光鲜亮丽的背后,是我们开发者对技 ...