环境搭建的过程
-
安装开发工具:下载 VS2019(编译C/C++)、python、IASL(Microsoft ACPI 源语言 (ASL) 编译器、NASM 编译器(x86 汇编语言编译器),默认安装到系统盘就好;
-
添加环境变量,将上面安装的软件都加入环境变量 path,新建一个环境变量PYTHON_HOME = "python安装目录"。记得路径最后是文件夹的记得加上 ' \ ',避免后续 error ;
-
下载 edk2 源代码,可以通过将 github 的代码导入到 gitee ,再用 git 拉取到本地,避免拉取失败;
-
更新子模块,下载好的 edk2 文件并不完整,有些必要的库文件和所需的源文件 edk2 通过 submodule的方式提供,通过在 git 输入以下命令:
git submodule update --init
该命令可以将 edk2 中的缺少的文件补充完整,但由于默认是从 github 中拉取,失败率较高,建议先将 github 的代码导入到 gitee ,同时更改 edk2 文件夹下的 .gitmodule 文件中的网址,改为对应 gitee 的网址,再次运行上述命令,速度更快且一次成功;
-
编译 BaseTool,打开 VS2019 命令行,转到 edk2 目录下,运行下列命令
edksetup.bat rebuild
编译好的工具在 BaseTools 文件夹中;
-
根据需要更改 Conf 目录下的 target.txt 和 tools_def.txt,前者给出了编译时的默认参数,后者规定了所使用的编译工具链,搭建环境过程中通常 tools_def.txt 是不需要修改的,主要修改 target.txt文件;如下:
TARGET_ARCH = X64 #默认是IA32 ,表示程序运行的目标架构 这里根据自己需要,我这里改成X64
TOOL_CHAIN_TAG = VS2019 #默认可能是其他值,这里我改成了 VS2019,表示使用的编译工具链是 VS2019,具体可以选择哪些工具,可以看 tools_def.txt 文件中的定义;
我就改了这两个,可以成功的运行例程,如果有其他需求可自行修改其他参数;
-
编译 UEFI 模拟器。打开 VS2019(或者其他版本)命令行,转到 edk2 目录下;运行以下命令:
edksetup.bat
build
build 指令可以带参数,具体编译哪一部分(可以自行百度 build 带参数的指令),这里可以直接 build 执行,不带参数则默认 target.txt 中的参数;
build 如果成功,无 error 的话,此刻你的文件夹下会多一个 Build 文件夹;
-
此时在 build 文件夹中就存在了模拟器的启动文件,执行它就可以打开模拟器,出现启动界面,命令如下:
cd Build\EmulatorX64\DEBUG_VS2019\X64\ && WinHost.exe
在 VS2019 命令行中运行以上代码模拟器则被启动,直到出现模拟器界面,则成功。
搭建过程中的error
-
编译的时候nmake会报错,出现error 7000: Failed to execute command,
解决:在PATH中要配置成 NASM_PREFIX=C:\nasm\ ,最后一个反斜杠一定不能忘记。或者命令行没有用管理员方式打开。
折腾了好几天,一直有几个error," failed to execute command " ,没想到是配置环境变量时最后少了一个‘ \ ’;
-
每次运行 WinHost.exe 模拟器,启动完成就卡住不动,
解决:切换输入法,改成英文输入法,重新启动就没问题了。
参考:《UEFI编程实践》——罗冰 && 网上的一些教程
标签:编译,VS2019,windows,模拟器,edk2,UEFI,build,txt,搭建 From: https://www.cnblogs.com/L-xiaohu/p/17132835.html