EDK2编译失败求助:两次编译报错及环境配置说明
解决EDK2 MdePkg在Ubuntu 20.04的编译错误
问题1:主分支BaseTools Python测试语法错误
- 原因:EDK2主分支目前要求Python 3.10及以上版本,类型注解、f-string等语法在Python 3.9及以下版本存在兼容问题。
- 解决步骤:
- 在Ubuntu 20.04中安装Python 3.10:
sudo apt update sudo apt install python3.10 python3.10-dev python3.10-venv - 将Python 3.10设为当前会话默认:
update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 1 update-alternatives --config python3 - 清理旧编译文件后重新编译BaseTools:
make -C BaseTools clean make -C BaseTools
- 在Ubuntu 20.04中安装Python 3.10:
问题2:edk2-stable202305版本ptrdiff_t未定义错误
- 原因:你使用的
TOOL_CHAIN_TAG=GCC49对应GCC 4.9版本,但实际环境是GCC 9.4.0,工具链标签不匹配导致编译环境的头文件、宏定义加载异常;ptrdiff_t是标准C类型,未定义通常是缺少标准头文件引用或工具链配置未启用标准库支持。 - 解决步骤:
- 修改工具链标签为匹配GCC 9的
GCC9:export TOOL_CHAIN_TAG=GCC9 - 检查并补全标准头文件:打开
RegularExpressionDxe模块的源文件,确保开头包含<stddef.h>,如果没有则添加:#include <stddef.h> - 重新初始化编译环境并编译MdePkg:
source edksetup.sh build -p MdePkg/MdePkg.dsc -t GCC9 -a X64 # 架构参数可根据需求改为IA32等
- 修改工具链标签为匹配GCC 9的
内容的提问来源于stack exchange,提问作者Rabia Hussain
相关产品推荐
相关产品推荐

