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

RISC-V GCC编译报错:中断函数含函数调用如何禁用该错误?

解决RISC-V GCC 5.2.0中断函数含函数调用的编译错误

问题根源

旧版本的riscv32-unknown-elf-gcc 5.2.0对__attribute__((interrupt))属性的检查非常严格,强制要求中断函数内部不能包含其他函数调用;而riscv32-corev-elf-gcc 11.0.0这类新版本编译器放宽了这一限制,允许中断函数内进行函数调用。

可用的编译选项

你可以试试以下两个编译选项来禁用这个错误:

  • -Wno-error=interrupt:把原本的错误提示降级成警告,让编译能正常通过。GCC把这类中断函数的检查归到了interrupt警告组,加这个前缀就能取消错误导致编译终止的行为。
  • 如果上面的选项没效果,试试-Wno-error=pedantic:有些旧版GCC可能把这类检查归类到严格标准(pedantic)的警告组,这个选项能关闭相关的错误限制。

额外提醒

  • 虽然编译能过,但得确认你的目标硬件平台的中断上下文支持函数调用——比如栈空间够不够、寄存器保存逻辑是否正确。旧版GCC的严格检查其实是为了避免硬件兼容性问题,所以编译通过后一定要在目标环境里验证代码运行是否稳定。
  • 如果有机会,优先升级编译器到11.0.0及以上的版本,新版本对中断函数的处理更灵活,还修复了不少旧版的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 22:55:15