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

使用RISC-V64架构gcc编译代码时如何关闭压缩指令集(RVC)?

RISC-V GCC 11.1.0彻底关闭RVC压缩指令方案

问题根因

你此前的命令未生效的核心原因有两点:

  1. 多数预编译发布的riscv64-unknown-elf-gcc 11.x版本默认开启了压缩指令生成逻辑,仅指定-march=rv64imafd不会主动关闭该逻辑
  2. 若未显式指定匹配的ABI,可能会链接到预先编译好的带RVC指令的依赖库、启动文件

正确编译配置

编译时需要同时传入三个核心参数:

riscv64-unknown-elf-gcc -march=rv64imafd -mabi=lp64d -mno-compress arch-fib.c -o arch-fib

参数含义:

  • -march=rv64imafd:明确声明目标架构仅包含I/M/A/F/D标准扩展,不含C(压缩指令)扩展
  • -mabi=lp64d:指定匹配架构的lp64d ABI,避免链接到适配RVC的ABI版本依赖文件
  • -mno-compress:强制关闭GCC代码生成阶段的压缩指令输出逻辑,彻底禁止生成任何RVC格式指令

额外校验方案

编译完成后可通过如下命令校验是否存在残留RVC指令(RVC指令均以c.为前缀):

riscv64-unknown-elf-objdump -d arch-fib | grep 'c\.'

若上述命令无输出,说明已彻底移除RVC指令;若仍有输出,需要检查所有依赖的静态库、启动文件(如crt0.o)是否是开启RVC编译的,需使用相同编译参数重新编译所有依赖文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 13:06:08