最近初学UEFI,在环境搭建时遇到很多坑,网上也找不到相同的问题,最后费劲解决了,记录一下。
环境软件安装不再赘述,网上很多例子,在build过程中出现了两个大的问题:
1,build过程中遇到C:\NASMnasm不是可执行命令的问题。
原因在于tools_def中,定义了nasm的路径,而文件中写的是*_*_*_NASM_PATH = ENV(NASM_PREFIX)nasm,那么编译的时候展开路径就变成了C:\NASMnasm,所以要修改文件,修改成*_*_*_NASM_PATH = ENV(NASM_PREFIX)\nasm.exe,展开就找到了nasm.exe,可进行编译。
2,定义工具链时选哪一个?
我安装的是VS2019,但按照网上例子,工具链写VS2019时找不到相应工具,原因在于执行完edksetup.bat后,工具链就会定义在tools_def中,那么选哪一个,首先搜一列表中,当前电脑安装的哪一个,就选(我的电脑安装的VS2019,但只能搜到VS2017,不知道啥原因),所以我就选工具链为VS2017,选其他的编译都会出错。
3,搞了好久,终于搞定了,记录一下
3.1,之前用的是PYTHON2.7以及VS2019,下载的EDK2不是最新版,缺了很多东西,所以导致即使编译通过,也没有winhost.exe文件。这就导致了EDK2的tools_def文件里没有VS2019,工具匹配不上,出现很多奇奇怪怪的问题,所以一怒之下就全部重来。
3.2,工具:PYTHON3.8,VS2019,EDK2到git上下载最新版。
3.3,编译过程不赘述,就讲遇到的问题
1,出现Library\GoogleTestLib\googletest\googletest\include is not found
解决:git clone https://gitee.com/LSLWIND/googletest,下载,然后拷贝到相应文件夹。
2,出现Library\CmockaLib\cmocka\include\cmockery is not found in packages path
解决:git clone https://gitee.com/ziyuyouxia/cmockery,下载,然后拷贝到相应文件夹。
3,出现aseLib\OUTPUT\X64\DisablePaging64.iii:35: error: symbol `InternalX86DisablePaging64.0' undefined以及LongJump.iii:44: error: parser: instruction expected
解决:NASAM版本低,将NASAM更新到2.15版本。