菜单

kaoqi
kaoqi
发布于 2026-07-20 / 11 阅读
0
0

EDK2项目编译链构建

EDK2项目的编译路程可以参考:edk2构建编译流程 - yooooooo - 博客园

EDK2项目的本体代码可以参考:GitHub - tianocore/edk2: EDK II · GitHub

EDK2项目参考方法:https://wenku.csdn.net/column/gd7md7zaea2(其中提及的EDK2固件没有权限)

EDK2在本文的主要目标是构建一个可以实在使用的UEFI固件。

EDK2项目使用AutoGen产生Makefile文件,Make完成后使用ImageGen进行二进制处理,并整合为对应EFI格式文件。

AutoGen工具

使用autogen工具(其实就是一个bash脚本,/uefi-tools/edk2-build.sh脚本)从dsc文件触发,构建inf和fdf文件后,再构造出dec文件,最终构造出makefile的过程。

1、EDK2项目首先使用source edksetup.sh脚本的方式完成环境路径的设置。

2、build工具在完成setup后,在/BaseTools/BinWrappers/PosixLike/build这个位置。

3、使用build命令,可以在指定平台描述文件、指定架构、指定工具链标签、指定构建模式的条件下进行makefile的构建:

build -p MyPlatformPkg/MyPlatfornPkg.dsc -a aarch64 -t GCC5 -b DEBUG

-p:指定平台描述文件路径。
-a:指定目标架构
-t:指定工具链标签
-b:指定构建模式

在进行build命令时,会读取target.txt和.dsc两个文件中的配置信息,明确对应的编译器和工具链来构建模块。

.dsc文件:平台描述文件

.fdf文件:固件描述文件

.inf文件:针对最小构建单元的模块Makefile与中间代码

.dec文件:对外暴露接口,其他模块通过引用此文件来获取接口定义

最终,会生成makefile文件,并通过makefile文件来生成fd固件文件或efi文件。


评论