Ruyisdk+香山南湖实操过程
学习目标:
- 掌握 RuyiSDK 包管理器的安装和基础使用
- 学会搭建 RISC-V 的交叉编译环境
- 理解 RISC-V 程序编译与运行流程
- 通过 QEMU 模拟香山南湖处理器环境,完成项目实践
环境要求
- 操作平台:Linux x86_64(推荐主流开发环境,如 WSL2)
- 安装内容:
- RuyiSDK 包管理器
- gnu-upstream 交叉编译工具链
- QEMU RISC-V 模拟器(支持香山南湖或替代架构)
0. 判断 QEMU 是否支持香山南湖架构
步骤 0.1:查看可用的 QEMU 包
ruyi list --all | grep qemu
步骤 0.2:查看 QEMU 支持的 CPU 类型
创建临时环境并激活:
ruyi venv -t gnu-upstream -e qemu-user-riscv-upstream generic ~/ruyi-test-env
source ~/ruyi-test-env/bin/ruyi-activate
检查支持的 CPU(查找 nanhu、xiangshan、c910):
ruyi-qemu -cpu help | grep -i "nanhu\|xiangshan\|c910"
结果判断
- 如支持
"xiangshan"或"nanhu":可直接使用-cpu xiangshan-nanhu - 如支持
"xuantie-c910":可使用-cpu xuantie-c910作为替代 - 如仅支持
"rv64":
然后重复上述步骤更新 QEMU 包。ruyi update
1. 环境搭建与安装
步骤 1.1:创建虚拟环境
ruyi venv -t gnu-upstream -e qemu-user-riscv-upstream generic ~/ruyi-nanhu-env
步骤 1.2:激活虚拟环境
source ~/ruyi-nanhu-env/bin/ruyi-activate
激活成功后提示符变为:
«Ruyi ruyi-nanhu-env» user@host:~$
![]()
步骤 1.3:验证工具链和 QEMU
riscv64-unknown-linux-gnu-gcc --version
ruyi-qemu --version
说明:RuyiSDK 提供的 ruyi-qemu 自动配置了 sysroot 和动态链接器路径,无需手动指定 -static。
2. 项目实践:Hello World
步骤 2.1:编写示例程序
创建源文件 hello.c:
#include <stdio.h>
int main() {
printf("Hello, World!\n");
return 0;
}
步骤 2.2:交叉编译
riscv64-unknown-linux-gnu-gcc hello.c -o hello
步骤 2.3:验证文件格式
file hello
验证输出应该显示为:
ELF 64-bit LSB pie executable, UCB RISC-V, RVC, dynamically linked...
步骤 2.4:在 QEMU 中模拟运行
ruyi-qemu ./hello
预期输出:
Hello, World!
3. 项目实践进阶:Coremark 基准测试
步骤 3.1:提取 Coremark 源码
mkdir -p ~/coremark && cd ~/coremark
ruyi extract coremark
步骤 3.2:进入源码目录
cd coremark-1.0.1
步骤 3.3:编译程序
make PORT_DIR=linux64 CC=riscv64-unknown-linux-gnu-gcc link
步骤 3.4:在 QEMU 中运行
ruyi-qemu ./coremark.exe
预期输出:
显示 CoreMark 的基准测试结果,如:
CoreMark 1.0 : 6604.623236 / GCC13.2.0 ...
4. 常用命令速查
-
创建开发环境
ruyi venv -t gnu-upstream -e qemu-user-riscv-upstream generic ~/ruyi-nanhu-env -
激活环境
source ~/ruyi-nanhu-env/bin/ruyi-activate -
退出环境
ruyi-deactivate -
更新包列表
ruyi update -
查看已安装包
ruyi list installed
5. 常见问题
Q1: 激活时报错 “No such file or directory”
解决方法:确保使用的是 ruyi-activate 而非常规的 activate。
Q2: riscv64-unknown-linux-gnu-gcc 找不到
解决方法:
ruyi update
ruyi venv -t gnu-upstream -e qemu-user-riscv-upstream generic ~/new-env
Q3: Coremark 编译报错 “gcc: command not found”
解决方法:显式指定交叉编译器:
make CC=riscv64-unknown-linux-gnu-gcc link


