You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux下编译EDK2时遇Objcopy错误:输入*.dll文件为空

EDK2编译MnpDxe.dll等文件错误的解决方案

以下是针对Kali 2023.3环境下EDK2编译报错的可行解决步骤:

1. 适配高版本GCC的工具链标签

GCC 13.1属于较新版本,EDK2默认的GCC5工具链定义对其兼容性较差,建议切换到对应版本的工具链标签:

  • 先安装兼容的GCC版本(以GCC11为例):
    sudo apt install gcc-11 g++-11
    
  • 设置环境变量指定工具链路径与标签:
    export GCC11_BIN=/usr/bin/
    export TOOL_CHAIN_TAG=GCC11
    
  • 重新执行编译命令

2. 切换到EDK2稳定分支

最新源码可能存在未修复的兼容性问题,切换到经过验证的稳定分支:

git checkout edk2-stable202308
git submodule update --init --recursive
  • 重新编译BaseTools:
    make -C BaseTools clean && make -C BaseTools
    

3. 添加GCC高版本兼容编译参数

针对MnpDxe这类报错模块,手动添加兼容性编译选项:

  • 编辑MdeModulePkg/Universal/Network/MnpDxe/MnpDxe.inf,在[BuildOptions]段添加:
    [BuildOptions]
    GCC:*_*_X64_CC_FLAGS = -Wno-error=stringop-overflow -Wno-error=array-bounds
    
  • 或者全局修改工具链配置:编辑BaseTools/Conf/tools_def.template,找到GCC系列的CC_FLAGS配置,添加上述参数后,执行build -t GCC5 -p MdeModulePkg/MdeModulePkg.dsc --gentoolsdef更新配置文件

4. 验证Python依赖与环境变量

  • 安装EDK2所需Python依赖:
    pip install -r edk2/BaseTools/Source/Python/requirements.txt
    
  • 确保核心环境变量正确设置:
    export EDK2_PATH=$(pwd)
    export WORKSPACE=$(pwd)
    

5. 清理编译缓存后重新构建

彻底清除之前的编译残留,避免缓存干扰:

rm -rf Build/
make -C BaseTools clean
source edksetup.sh
make -C BaseTools
build -t GCC11 -a X64 -p MdeModulePkg/MdeModulePkg.dsc

内容的提问来源于stack exchange,提问作者Parsa Mousavi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 13:02:08