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

EDK2(EFI环境)下编译Lua失败,寻求可用补丁及解决方法

解决EDK2编译Lua的noreturn函数错误及替代补丁方案

一、直接修改代码快速修复当前错误

你遇到的问题是luaD_throw函数被声明为noreturn,但编译器检测到它存在可到达的返回路径。可以直接修改代码规避:

  • 打开/home/dave/dev/edk2libc/edk2-libc/AppPkg/Applications/Lua/src/ldo.c文件
  • 定位到luaD_throw函数的末尾,添加一段确保不会返回的逻辑,比如:
// 在函数结束的大括号前添加
for (;;);
// 或者调用EDK2环境中不会返回的退出函数
// gBS->Exit(gImageHandle, EFI_ABORTED, 0, NULL);
  • 保存文件后重新编译即可。

二、寻找替代补丁的可行途径

  • EDK2代码仓库检索
    去EDK2官方仓库的历史提交中搜索lua或ldo.c关键词,社区维护的应用包常包含这类编译问题的修复记录,能找到其他用户提交的同类型补丁。
  • EDK2社区求助
    在EDK2官方邮件列表(edk2-devel@lists.01.org)或Discord服务器发帖描述问题,社区开发者大概率会提供现成的修复方案或指导。
  • 调整编译参数绕过警告
    这类noreturn错误属于编译警告被升级为错误,可在Lua应用的Inf配置文件中添加参数关闭对应警告:
    GCC_FLAGS = -Wno-error=noreturn
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 01:19:54