编译最新EDK2源码踩坑…

起因

一直在用UDK2018调试程序,最近发现NT32这个模拟器启动后在最新Windows 10下键盘无法使用,用鼠标也无法移动窗口,不知什么原因引起,于是下载个最新的EDK2源码的EmulatorPkg看看有没这个问题。不幸的是,问题依旧,最后百度了下,有人已经写出原因了,就是跟Windows10自带的中文输入法冲突了,所以我装了一个第三方的输入法搜狗便解决了。这里还是要记录一下编译EDK2遇到的几个问题。

坑1

最新的EDK2源码下载下来安装包仅13兆,我还以为是做了精简,其实并不是,只是代码架构更加模块化,耦合性更低了。

从Github下载完代码后,首先就是执行 edksetup.bat rebuild 编译 BaseTools,然后就在这里出错了,提示

BrotliCompress.c(20) : fatal error C1083: ޷򿪰ļ: ./brotli/c/common/constants.h: No such file or direc tory

打开BaseTools\Source\C\BrotliCompress\brotli目录一看是空的,而github上该目录是一个代码引用连接,来自于一个叫brotli的项目,下载代码的时候并不会一起打包,而且代码中有好几个模块是属于引用其它项目的,所以有网络条件的,可以先git clone到本地,然后执行:

git submodule update --init

该命令用于下载引用代码的模块,执行完才是一套完整的代码,重新打包了一下,代码变80余兆。这一部分github也是有提示的

接着便可以进行编译了。这里要注意一下的是,最新的代码支持VS2012,VS2013,VS2015,VS2017,VS2019,但我用VS2013编译Emulator模块是失败的,提示:

LINK : warning LNK4108: ָ /ALIGN ûָ /DRIVERӳܲ
LINK : warning LNK4001: δָļʹÿ
LINK : warning LNK4068: δָ /MACHINEĬΪ X86
LINK : error LNK2001: ޷ⲿ _ModuleEntryPoint
e:\04_udk\edk2\Build\EmulatorX64\DEBUG_VS2013\X64\WinHost.lib : fatal error LNK1120: 1 ޷ⲿ
NMAKE : fatal error U1077: "C:\Program Files (x86)\Microsoft Visual Studio 12.0\Vc\bin\x86_amd64\link.exe": ش롰0x460
Stop.

解决方法:打开EmulatorPkg\Win\Host\WinHost.inf,在BuildOptions处添加:

MSFT:*_VS2013_X64_DLINK_FLAGS      = /LIBPATH:"%VS2013_PREFIX%VC\Lib\AMD64" /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 Gdi32.lib User32.lib Winmm.lib Advapi32.lib

这样可以编译X64的模拟器,IA32暂时无法解决,VS2015或以上版本应该不会有此问题。

坑2

Ubuntu下编译EmulatorPkg,运行的时候会提示“段错误(核心已转储)(Segmentaton Fault)”,需要在编译前执行:

perl -pi.bak -e 's/-D DISABLE_NEW_DEPRECATED_INTERFACES/-D DISABLE_NEW_DEPRECATED_INTERFACES -O0/g' EmulatorPkg/EmulatorPkg.dsc

然后编译即可,也可以将这一行加到EmulatorPkg\build.sh的文件首,然后再执行./build.sh编译!

参考

1.玩 UEFI 仿真器 (zenn.dev)

2.EDK2 模拟器GOP Window无法操作(失去焦点)_小鹰信息技术服务部-CSDN博客

 

版权声明:
作者:bin
链接:https://ay123.net/mystudy/uefi/1112/
来源:爱影博客
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>