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
相关产品推荐
相关产品推荐

