最近在使用 EDK201903 的时候遇到了一个奇怪的问题, 错误信息如下:
ScanMem32Wrapper.c
c:\buildbs\stable201903\Build\NT32X64\DEBUG_VS2015x86\X64\MdePkg\Library\BaseLib\BaseLib\OUTPUT\X64\LongJump.iii:22: fatal: unable to open include file `Nasm.inc’
NMAKE : fatal error U1077: ‘C:\nasm\nasm.EXE’ : return code ‘0x1’
Stop.
具体代码在 \MdePkg\Library\BaseLib\X64\LongJump.nasm 。 就是说在编译过程中编译器发现找不到 Nasm.inc 这个文件。
; Module Name:
;
; LongJump.Asm
;
; Abstract:
;
; Implementation of _LongJump() on x64.
;
;------------------------------------------------------------------------------
%include "Nasm.inc"
DEFAULT REL
SECTION .text
extern ASM_PFX(PcdGet32 (PcdControlFlowEnforcementPropertyMask))
在 \MdePkg\Include\X64 目录下有这个文件。
经过搜索,在 https://bugzilla.tianocore.org/show_bug.cgi?id=2719 有提到这个问题,但是我没看明白问题的原因。一个解决方法是将这个文件拷贝到 \MdePkg\Library\BaseLib\X64 下面,再次编译即可通过。
这个问题挺奇怪, EDK2 201903 我已经使用了很长时间,不知道为什么突然又出现这样的错误。