最近又开始搭建UEFI环境了.之前有基于VS2010搭建过,貌似还挺简单。由于现在又是git又是VS2020, UDK的持续更新,想基于git上最新的UDK搭配最新的VS2020搭建一个环境。奈何碰了一鼻子灰。最终也只是在UDK2018的基础上搭配VS2017勉强编译过。
具体的过程就不多做累赘了,分享过程中遇到的问题。观友们如果遇到类似的问题,不妨尝试一下列出的解决方法。
- 编译NT32 报错 build -p Nt32Pkg/Nt32Pkg.dsc -a IA32
看起来是genFW造成的。
解决方法如下:
可以将\BaseTools\Bin\Win32\GenFds.exe 改名为 GenFds.LABZ。 然后把
\BaseTools\BinWrappers\WindowsLike 加入系统环境变量的 Path 路径
添加路劲后,重启后问题消失。
2. 最近在编译 AppPkg 的时候(Build NTPkg 无问题)遇到如下错误
c:\buildbs\UDK\StdLib\Include\sys/EfiCdefs.h(342): error C2220: warning treated as error - no 'object' file generated
c:\buildbs\UDK \StdLib\Include\sys/EfiCdefs.h(342): warning C4117: macro name 'STDC_HOSTED' is reserved, '#define' ignored
检查代码 \StdLib\Include\sys\EfiCdefs.h 有如下定义
// Keep compiler quiet about casting from smaller to larger types
#pragma warning ( disable : 4306 )
#define STDC 1
#define STDC_VERSION 199409L
#define STDC_HOSTED 1 //这个定义导致问题
删除 STDC_HOSTED 定义,或者添加如下编译指令都可以修复这个问题
3.无法安装VS2015.
尝试很久都不成功,可能是系统包的问题,使用VS2017替代
4.编译成功,无法打开模拟器
此问题暂时没解决,暂时用QEMU实现。