前一段试验了新出的 EDK2 Stable202002 版本,可以在 https://github.com/tianocore/edk2/releases/tag/edk2-stable202002 看到,有如下的更新:
New Features
- Basetool: Reuse compiler show-include feature for the incremental build quality and performance
- BaseTools GenerateCapsule: Support capsule dependency
- FmpDxe: Support capsule dependency
- New BaseCryptLib instances to compile independently from callers
- Add TCG PFP revision 105 support and NIST SP800-155 event
- MpInitLib: Build information for loaded and detected microcode patches
- Add platform microcode shadow PPI to UefiCpuPkg
- BaseCryptLib: Remove HmacXxxGetContextSize and replace HmacXxxInit with HmacXxxSetKey
- Enable Unified API for UEFI drivers utilizing HASH/RSA Authentication Mechanism
- Add Unit Test Framework to edk2 repository
因为有朋友经常遇到环境配置上面的问题,因此,这次直接提供一个 EDK202002 +Win10 + VS2015 的镜像文件。有需要的朋友可以下载之后从 VirtualBox 启动。
链接: https://pan.baidu.com/s/1asiGrFGwyhZ91u9OepCxXg 提取码: m73e
=========================================================
20201019 补充 简单介绍一下 VS2019编译这套代码的方法
为了编译成功,除了 VS2019 还需要安装下面2个软件:
1. Python 3.8 (安装时注意选择 Add python to path)
2.安装 Nasm (安装完后检查一下,如果默认目录不是在C:根目录下,那么需要将全部文件拷贝到 c:\nasm下)
3. 运行 edksetup rebuild 生成编译工具
接下来就遇到奇怪的问题了,当我们使用 build -a X64 -p EmulatorPkg\EmulatorPkg.dsc -t VS2019 命令后,编译中会有如下的错误:
"C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.26.28801\bin\Hostx86\x64\link.exe" /out:"c:\buildbs\s202002\Build\EmulatorX64\DEBUG_VS2019\X64\WinHost.exe" /base:0x10000000 /pdb:"c:\buildbs\s202002\Build\EmulatorX64\DEBUG_VS2019\X64\WinHost.pdb" /ALIGN:4096 /FILEALIGN:4096 /SUBSYSTEM:CONSOLE /EXPORT:InitializeDriver=_ModuleEntryPoint /BASE:0x10000 @c:\buildbs\s202002\Build\EmulatorX64\DEBUG_VS2019\X64\EmulatorPkg\Win\Host\WinHost\OUTPUT\static_library_files.lst
Microsoft (R) Incremental Linker Version 14.26.28806.0
Copyright (C) Microsoft Corporation. All rights reserved.
c:/buildbs/s202002/Build/EmulatorX64/DEBUG_VS2019/X64/EmulatorPkg/Win/Host/WinHost/OUTPUT/WinHost.lib
c:/buildbs/s202002/Build/EmulatorX64/DEBUG_VS2019/X64/MdePkg/Library/BaseLib/BaseLib/OUTPUT/BaseLib.lib
c:/buildbs/s202002/Build/EmulatorX64/DEBUG_VS2019/X64/MdePkg/Library/BaseMemoryLib/BaseMemoryLib/OUTPUT/BaseMemoryLib.lib
c:/buildbs/s202002/Build/EmulatorX64/DEBUG_VS2019/X64/MdePkg/Library/BasePcdLibNull/BasePcdLibNull/OUTPUT/BasePcdLibNull.lib
c:/buildbs/s202002/Build/EmulatorX64/DEBUG_VS2019/X64/MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull/OUTPUT/BaseDebugLibNull.lib
c:/buildbs/s202002/Build/EmulatorX64/DEBUG_VS2019/X64/MdePkg/Library/BasePeCoffExtraActionLibNull/BasePeCoffExtraActionLibNull/OUTPUT/PeCoffExtraActionLibNull.lib
c:/buildbs/s202002/Build/EmulatorX64/DEBUG_VS2019/X64/EmulatorPkg/Library/SecPpiListLib/SecPpiListLib/OUTPUT/SecPpiListLib.lib
c:/buildbs/s202002/Build/EmulatorX64/DEBUG_VS2019/X64/MdePkg/Library/BasePrintLib/BasePrintLib/OUTPUT/BasePrintLib.lib
c:/buildbs/s202002/Build/EmulatorX64/DEBUG_VS2019/X64/MdePkg/Library/BasePeCoffLib/BasePeCoffLib/OUTPUT/BasePeCoffLib.lib
c:/buildbs/s202002/Build/EmulatorX64/DEBUG_VS2019/X64/EmulatorPkg/Library/ThunkPpiList/ThunkPpiList/OUTPUT/ThunkPpiList.lib
c:/buildbs/s202002/Build/EmulatorX64/DEBUG_VS2019/X64/EmulatorPkg/Library/ThunkProtocolList/ThunkProtocolList/OUTPUT/ThunkProtocolList.lib
c:/buildbs/s202002/Build/EmulatorX64/DEBUG_VS2019/X64/EmulatorPkg/Library/SecPeiServicesLib/SecPeiServicesLib/OUTPUT/SecPeiServicesLib.lib
c:/buildbs/s202002/Build/EmulatorX64/DEBUG_VS2019/X64/MdeModulePkg/Library/FrameBufferBltLib/FrameBufferBltLib/OUTPUT/FrameBufferBltLib.lib
LINK : warning LNK4108: /ALIGN specified without /DRIVER; image may not run
LINK : warning LNK4001: no object files specified; libraries used
LINK : warning LNK4068: /MACHINE not specified; defaulting to X86
LINK : error LNK2001: unresolved external symbol _ModuleEntryPoint
c:\buildbs\s202002\Build\EmulatorX64\DEBUG_VS2019\X64\WinHost.lib : fatal error LNK1120: 1 unresolved externals
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.26.28801\bin\Hostx86\x64\link.exe"' : return code '0x460'
Stop.
这是生成模拟器的最后一个动作,但是在 Link 的时候遇到了问题。
偶然发现,在 \EmulatorPkg\Win\VS2017\ 有 BuildVS.bat 这个文件,内容如下:
cd ../../../
@call edksetup.bat
build -p EmulatorPkg\EmulatorPkg.dsc -t VS2017 %*
如果我们使用 build -a X64 -p EmulatorPkg\EmulatorPkg.dsc -t VS2017 那么是可以编译通过的。
经过比对,最终发现在 \EmulatorPkg\Win\Host\WinHost.inf 有对 VS2017 编译工具特别的处理。根据这个提示,在文件中加入针对 VS2019 的特别处理如下:
MSFT:*_VS2019_X64_DLINK_FLAGS = /LIBPATH:"%VCToolsInstallDir%lib\x64" /LIBPATH:"%UniversalCRTSdkDir%lib\%UCRTVersion%\ucrt\x64" /LIBPATH:"%WindowsSdkDir%lib\%WindowsSDKLibVersion%\um\x64" /NOLOGO /SUBSYSTEM:CONSOLE /NODEFAULTLIB /IGNORE:4086 /MAP /OPT:REF /DEBUG /MACHINE:AMD64 /LTCG Kernel32.lib MSVCRTD.lib vcruntimed.lib ucrtd.lib Gdi32.lib User32.lib Winmm.lib Advapi32.lib
即可通过编译。
請問您的EmulatorPkg可以編譯並且執行嗎?
嗯,我用 VS2015 没问题。如果你用 VS2019 编译这个版本的 EmulatorPkg 是有问题的。你可以先试试 \EmulatorPkg\Win\VS2017\ 下面的 BuildVS.bat 编译出来的是 IA32 位的,然后你用 build -a X64 -p EmulatorPkg\EmulatorPkg.dsc -t VS2017 (虽然你装的2019 但是命令仍然可以使用),编译 X64 试试看。
我用2019编译出来的emulator,键盘不能用,请问是啥原因?
这个问题我没遇到过,我这边都是正常的。
我跟了下WinNtGopThreadWindowProc,发现不响应WM_KEYDOWN消息,但WM_PAINT,WM_LBUTTONDOWN这些消息都可以正常进来,只要一按键盘,消息队列就不再响应任何消息,很奇怪,这里应该跟UEFI部分没关系
挺奇怪的啊,建议换一套 code 还有换一个编译器看看?还有一个可能就是你的编译器和 sdk 不匹配?
Hi Sir,
鏡像無法下載...
我检查了一下,没问题,不知道是不是百度网盘本身的限制.......
Hi Sir,
是不是一定要同步到自己百度雲, 才能下載啊?
我沒百度雲帳號, 好像不能下載
应该是这样,百度网盘页面也没有办法下载超大的文件,必须装它客户端。
還是無法下載 ,,,出現 https://pan.baidu.com/error/404.html
要不您找别人帮忙试试?
如果你人在台灣, 是無法連上百度雲取得下載連結的, 可以透過公開的 proxy 或是 vpn 連上任何一國外(日本, 美國都可以), 然後再連到文章的百度雲連結就可以看到檔案了.
这样啊,那很折腾了。这次放出来的是 VirtualBox 的镜像,非常大。
上述動作只為了取得連結, 接著同步到自己的百度雲, 再來就不需要了.
下載檔案可以直接透過百度雲的同步軟體下載回來.
能否share下配置好的Basetool了
你遇到什么问题了?这个版本我编译通过的,但是没有用的。