edk2-stable202108 在 https://github.com/tianocore/edk2/releases/tag/edk2-stable202108
下载解压 stable202108.tar.gz 之后,尝试编译自带的模拟环境:
- edksetup.bat
- build -a X64 -p EmulatorPkg\EmulatorPkg.dsc
会遇到下面的错误
错误的原因是无法找到 Brotli相关的内容。解决方法是下载 submodule-MdeModulePkg-Library-BrotliCustomDecompressLib-brotli.zip 将解压后的内容放到\MdeModulePkg\Library 目录下。
再次编译遇到下面的错误:
"C:\Program Files (x86)\Microsoft Visual Studio 14.0\Vc\bin\x86_amd64\cl.exe" /showIncludes /nologo /E /TC /DVFRCOMPILE /FIFileExplorerLibStrDefs.h /Ic:\buildbs\stable202108\MdeModulePkg\Library\FileExplorerLib /Ic:\buildbs\stable202108\Build\EmulatorX64\DEBUG_VS2015x86\X64\MdeModulePkg\Library\FileExplorerLib\FileExplorerLib\DEBUG /Ic:\buildbs\stable202108\MdePkg /Ic:\buildbs\stable202108\MdePkg\Include /Ic:\buildbs\stable202108\MdePkg\Test\UnitTest\Include /Ic:\buildbs\stable202108\MdePkg\Include\X64 /Ic:\buildbs\stable202108\MdeModulePkg /Ic:\buildbs\stable202108\MdeModulePkg\Include /Ic:\buildbs\stable202108\MdeModulePkg\Library\BrotliCustomDecompressLib\brotli\c\include c:\buildbs\stable202108\MdeModulePkg\Library\FileExplorerLib\FileExplorerVfr.vfr > c:\buildbs\stable202108\Build\EmulatorX64\DEBUG_VS2015x86\X64\MdeModulePkg\Library\FileExplorerLib\FileExplorerLib\OUTPUT\FileExplorerVfr.i
BootManagerVfr.Vfr
DeviceManagerVfr.Vfr
'VfrCompile' is not recognized as an internal or external command,
operable program or batch file.
查了一下,这个错误应该是 VfrCompile 这个工具没有编译为 EXE 导致的。所以我们需要先编译准备好 Windows 下的Build工具。命令:
edksetup.bat Rebuild
错误如下:
Microsoft (R) Program Maintenance Utility Version 14.00.24210.0
Copyright (C) Microsoft Corporation. All rights reserved.
cl.exe -c /nologo /Zi /c /O2 /MT /W4 /WX /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /W2 -I .\brotli\c\include -I . -I C:\BuildBs\stable202108\BaseTools\Source\C\Include -I C:\BuildBs\stable202108\BaseTools\Source\C\Include\Ia32 -I C:\BuildBs\stable202108\BaseTools\Source\C\Common BrotliCompress.c -FoBrotliCompress.obj
cl : Command line warning D9025 : overriding '/W4' with '/W2'
BrotliCompress.c
BrotliCompress.c(20): fatal error C1083: Cannot open include file: './brotli/c/common/constants.h': No such file or directory
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\cl.exe"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: 'if' : return code '0x1'
Stop.
NMAKE : fatal error U1077: 'if' : return code '0x1'
Stop.
应该是缺少BrotliCompress的代码导致的,下载 submodule-BaseTools-Source-C-BrotliCompress-brotli.zip,将内容解压到 \BaseTools\Source\C\BrotliCompress\brotli 中。
再次编译能够正常生成build工具:
此外,再次强调必须使用 x86 编译窗口,我是用的是VS2015。
接下来再次编译模拟工具,成功:
运行 \Build\EmulatorX64\DEBUG_VS2015x86\X64\WinHost.exe
之后测试编译支持SecureBoot 的OVMF BIOS:
build -a X64 -p OvmfPkg\OvmfPkgx64.dsc -D SECURE_BOOT_ENABLE=TRUE
收到错误提示如下:
Processing meta-data .
Architecture(s) = X64
Build target = DEBUG
Toolchain = VS2015x86
Active Platform = c:\buildbs\stable202108\OvmfPkg\OvmfPkgX64.dsc
...
build.py...
c:\buildbs\stable202108\CryptoPkg\Library\OpensslLib\OpensslLibCrypto.inf(26): error 000E: File/directory not found in workspace
c:\buildbs\stable202108\CryptoPkg\Library\OpensslLib\openssl\e_os.h
和前面的方法一样,补充 submodule-CryptoPkg-Library-OpensslLib-openssl.zip 文件到
\CryptoPkg\Library\OpensslLib\openssl 目录下。,
之后即可正常编译。
本问题到的完整编译环境已经打包,可以在 https://pan.baidu.com/s/1pqD3XYAzrZbExRQALxs4OQ 提取码: tuqy 下载。
我没有用你说的那个命令行窗口一直编译报错,所以来看看你这边,照你说的编译过了。。。。
我想问下为啥要用这个命令行窗口?GitHub上我看也没有写。
因为用那个窗口有一些设置编译器路径的动作,用普通的cmd窗口也可以手工进行这个路径的设置,但是会比较麻烦也难免遗漏,所以能用vs自带的也就直接用了。