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

RISC-V下基于binutils2.30移植GCC9.3.0/10.3.0出现ld仿真模式错误

问题排查与解决方法

根因确认

该报错的核心原因是 binutils 2.30版本的RISC-V链接器(ld)不支持带_lp64/_ilp32后缀的仿真模式命名,这类ABI后缀是更高版本binutils才引入的特性。你使用的GCC 9.3.0默认会向ld传递elf64lriscv_lp64的仿真参数,和旧版binutils的支持范围不匹配。
你可以执行以下命令验证ld的支持范围:
riscv64-unknown-linux-gnu-ld -V
输出结果中只会包含报错提示的elf64lriscv、elf32lriscv两个可选仿真模式,不存在带ABI后缀的选项。

解决方案(二选一即可)

方案1:适配现有版本无需升级

  • 单次编译临时规避:执行编译命令时手动指定ld的仿真模式,添加-Wl,-melf64lriscv参数即可:
    gcc hello.c -o test -Wl,-melf64lriscv
    
  • 永久生效:重新编译GCC,在原configure参数基础上追加--with-ld-emulation=elf64lriscv,编译安装后GCC会默认传递正确的仿真模式,无需每次手动加参数。
    另外可检查binutils的编译配置,你当前的binutils编译命令未添加--disable-multilib,如果开启了multilib也可能导致仿真模式匹配异常,建议编译binutils时和GCC一样添加--disable-multilib参数后重新编译,再重新编译GCC验证。

方案2:升级binutils版本

将binutils升级到2.32及以上版本,即可原生支持带_lp64后缀的仿真模式,无需修改GCC的任何配置,适配性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 18:24:07