报错
编译报错信息如下:
出现该错误的原因是编译时使用的编译工具不对。这里指的编译工具是使用了BaseTools\Bin\Win32下的编译工具,对应的PCD工具由于版本比较旧,跟代码中的不匹配,所以就会报这个错误,对应的报错实际上是代码产生的,位于MdeModulePkg\Universal\PCD\Pei\Service.h:
//
// Please make sure the PCD Serivce PEIM Version is consistent with
// the version of the generated PEIM PCD Database by build tool.
//
#define PCD_SERVICE_PEIM_VERSION 7
//
// PCD_PEI_SERVICE_DRIVER_VERSION is defined in Autogen.h.
//
#if (PCD_SERVICE_PEIM_VERSION != PCD_PEI_SERVICE_DRIVER_VERSION)
#error "Please make sure the version of PCD PEIM Service and the generated PCD PEI Database match."
#endif
解决措施
产生问题的原因是使用了较老的编译工具,而且该工具是Win32的版本,实际上我们完全可以不使用这个版本。因为这个版本并不是源代码自带的,而是需要额外下载的,这就可能导致兼容性的问题。所以为了解决上述的问题,最好的办法就是不用这个工具。但是为了编译,还是需要使用到build这样的工具,所以这里就使用Python的版本。这需要先安装Python(这里安装了Python2.7,这其实不是一个好的选择,因为Python2的版本已经过期了),然后设置环境变量PYTHON_HOME,之后编译的时候就使用Python脚本了,而不再需要Win32的版本。