一、要求
打印 HelloWorld。
二、环境
EDK2:202305
三、实现
(这里是我的路径,以自己的为准。)
在 D:\edk2\MdeModulePkg\Application (我这里以 D盘为例子)这个路径下创建一个自己的文件夹(全英文,不要有中文符号),在新创建的自己的文件夹下,再重新创建一个自己的工程。(我这里自己的工程是 HelloWorld)。如下图:
在自己创建的文件夹 HelloWorld 下分别创建 .c文件和 .inf文件。如下图:
.c文件:
#include <Uefi.h>
EFI_STATUS UefiMain(IN EFI_HANDLE Imagehandle, IN EFI_SYSTEM_TABLE *SystemTable) {
SystemTable->ConOut->OutputString(SystemTable->ConOut, L"HelloWorld\n");
return EFI_SUCCESS;
}
.inf文件:
[Defines]
INF_VERSION = 0x00010005
BASE_NAME = hello
FILE_GUID = f35a7352-2cc1-44c0-9ba6-4c3b5f4dbe42
MODULE_TYPE = UEFI_APPLICATION
VERSION_STRING = 1.0
ENTRY_POINT = UefiMain
[sources]
hello.c
[Packages]
MdePkg/MdePkg.dec
[LibraryClasses]
UefiApplicationEntryPoint
UefiLib
然后把 .inf文件的相对路径复制到 D:\edk2\EmulatorPkg 目录下的 EmulatorPkg.dsc 文件中的 [Components] 下。如下图:
四、编译
右键 edksetup.bat ,打开开发人员命令提示。
在下图界面中依次执行
edksetup.bat
build
这两个指令。
五、验证
编译成功后会在 D:\edk2\Build\EmulatorX64\DEBUG_VS2017\X64 这个目录下生成一个 .efi文件。如下图:
还是在 D:\edk2\Build\EmulatorX64\DEBUG_VS2017\X64 这个目录下找到 WinHost.exe 文件。如下图:
左键双击 WinHost.exe,出现下图所示界面:
执行图中的指令后,可以看到打印 HelloWorld。其中 hello.efi 为上面编译生成的文件。