笔记——inf、dsc、dec文件

一、inf文件

inf文件(Module Information File)--用于编译一个模块;模块的工程文件,相当于Makefile文件,用于指导EDK2编译工具自动编译模块。
工程文件分很多块,每个块以[块名]开头,[块名]必须单独占一行
必须块:
[Defines]                        定义本模块的属性变量以及其他变量,这些变量可以在工程文件其他块中引用
[Sources]                       列出本模块的所有源文件以及资源文件
[Packages]                    列出本模块引用到的所有包的包声明文件;可能引用到的资源包括头文件、GUID、Protocol等,这些资源都声明在包的包声明文件.dec中
[LibraryClasses]            列出本模块要链接的库模块
非必须块:
[Protocol]                      列出本模块用到的Protocol
[Guids]                           列出本模块用到的GUID
[BuildOptions]              指定编译和链接选项
[Pcd]                              Pcd全称平台配置数据库(Platform Configuration Database),用于列出本模块用到的Pcd变量,这些Pcd变量可以被整个UEFI系统访问

[Defines]块
[Defines]块用于定义模块的属性和其他变量,块内定义的变量可被其他块引用
1、属性定义语法
属性名=属性值
2、必须定义的属性
INF_VERSION:INF标准的版本号
BASE_NAME:模块名字字符串
FILE_GUID:每个工程文件必须有一个8-4-4-4-12格式的GUID,用于生成固件
VERSION_STRING:模块的版本号字符串
MODULE_TYPE:定义模块的模块类型
ENTRY_POINT:定义模块的入口函数

[Sources]块
[Sources]块用于列出模块的所有源文件和资源文件
1、语法
块内每一行表示一个文件,文件使用相对路径
2、体系结构相关块
.$(Arch)是可选项,可以是IA32、X64、IPF、EBC、ARM中的一个,表示本块使用的体系结构
3、编译工具链相关的源文件
|GCC表示文件仅在使用GCC编译器时有效

[Packages]块
[Packages]块用于列出本模块引用到的所有包的包声明文件(.dec文件)
1、语法
每一行列出一个文件,文件使用相对路径。若[Sources]块内列出了源文件,则在[Packages]块必须列出Mdepkg/Mdepkg.dec,并将其放在本块的首行

[LibraryClasses]块
[LibraryClasses]块用于列出本模块要连接的库模块
1、语法
块内每一行声明一个要链接的库(库定义在包的.dsc文件中)
2、常用库
应用程序工程模块必须链接UefiApplicationEntryPoint库;驱动模块必须链接UefiDriverEntryPoint库

二、dsc文件

dsc文件(Platform Description File)--用于编译一个Package;每个包包含一个dec(Package Declaration File)文件和一个dsc文件
必须块
[Defines]
[LibraryClasses]
[Components]
非必须块
[PCD]
[BuildOptions]

[Defines]块
[Defines]块用于设置build相关的全局宏变量,这些变量可以被.dsc文件的其他模块引用
1、语法
宏变量名=值
2、必须定义的宏变量
DSC_SPECIFICATION                        数值                须保证向后兼容
PLATFORM_GUID                             GUID              平台GUID,每个.dsc文件必须有一个独一无二的GUID
PLATFORM_VERSION                      数值                .dsc文件变化时,增加此数值
PLATFORM_NAME                           标识符             标识字符串只能包含英文字符、数字、横线和下划线
SKIOD_IDENTIFIER                           标识符             可以通过命令行在build时传入
SUPPORTED_ARCHITECTURES       列表                 通过 | 分隔的列表,该.dsc所支持的平台体系结构
BUILD_TARGETS                              列表                 通过 | 分隔的刘表,该.dsc所支持的编译目标

[LibraryClasses]块
[LibraryClasses]块中定义了库的名字以及库.inf文件的路径,这些库可以被[Components]块内的模块引用
1、语法
[LibraryClassed.$(Arch).$(MODULE_TYPE),LibraryClasses.$(Arch1).$(MODULE_TYPE1)]
    LibraryName | Path/LibraryName.inf
$(Arch)和$(MODULE_TYPE)是可选项,逗号表示并列关系。
$(Arch)表示体系结构
$(MODULE_TYPE)表示模块的类别

[Components]块
[Components]块中地暖管一的模块都会被build工具编译并生成.efi文件

三、dec文件

dec文件(Packages Declaration File)定义了公开的数据和接口,供其他模块使用
必须区块
[Defines]
非必须快
[Includes]
[LibraryClasses]
[Guids]
[Protocols]
[Ppis]
[PCD]

[Defines]块
[Defines]块用于提供package的名称、GUID、版本号等信息

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值