一、测试环境
-
操作系统:Windows + WSL
-
Linux 发行版:Ubuntu
-
主机架构:x86_64
-
工具:RuyiSDK Package Manager / ruyi
二、安装过程
新装 Ubuntu 需安装 Python 依赖:
Bash
sudo apt update
sudo apt install python3-pip
1.RuyiSDK 安装
绕过 PEP 668 限制安装
- 为避免
externally-managed-environment报错,使用--break-system-packages参数强制安装:
Bash
pip3 install ruyi --break-system-packages
配置环境变量
- 将 ruyi 可执行文件路径加入
PATH:
Bash
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
2.工具链与模拟器安装
Bash
# 安装 GNU 交叉编译工具链
ruyi install gnu-upstream
# 搜索并安装 QEMU 模拟器
ruyi list --name-contains qemu
ruyi install qemu-user-riscv-upstream
补充系统依赖
- 若安装过程中出现缺少
zstd的循环报错,按Ctrl+C中断并安装依赖,后重新执行 Ruyi 安装命令:
Bash
sudo apt install zstd
3.创建与激活虚拟环境 (venv)
- 通过 venv 功能集成工具链与模拟器:
Bash
# 创建虚拟环境
ruyi venv -t gnu-upstream -e qemu-user-riscv-upstream ./rv-env
# 激活虚拟环境
source ./rv-env/bin/activate
激活后终端提示符前显示 «Ruyi rv-env»
4.交叉编译与验证
编写 C++ 源码
- 在虚拟环境中创建
hello.cpp:
Bash
echo '#include <iostream>' > hello.cpp
echo 'int main() { std::cout << "Hello, RISC-V from RuyiSDK!" << std::endl; return 0; }' >> hello.cpp
交叉编译
- 使用工具链编译代码为 RISC-V 架构可执行文件:
Bash
riscv64-unknown-linux-gnu-g++ hello.cpp -static -o hello_cpp
架构验证
- 验证编译产物架构:
Bash
file hello_cpp
模拟运行
- 运行程序:
Bash
./hello_cpp
三、 进阶体验:VS Code 插件安装使用
对于不熟悉命令行的初学者,RuyiSDK 提供了体验极佳的 VS Code 官方插件
1. 环境打通
在 WSL2 终端项目中输入 code .,可无缝唤醒 Windows 侧的 VS Code 并打通底层 Linux 环境。安装官方 RuyiSDK 插件后,系统会自动检测到本地的 Ruyi 核心。
2. 图形化包管理与环境构建
-
可视化商店:插件提供了直观的 Packages 界面,可直接鼠标点击安装/卸载工具链与模拟器,已安装的包会自动打上
Installed标签。 -
一键 Venv 构建:通过命令面板 (
Ctrl+Shift+P→Ruyi: Create a New Venv),可直接在下拉菜单中点选gnu-upstream工具链、qemu模拟器以及generic架构配置。 -
激活:创建完成后,在左侧边栏一键点击即可激活环境,IDE 底部状态栏与集成终端会自动切换至该虚拟环境,彻底免去手敲配置命令的烦恼。
四、 结语
-
使用体验:
- RuyiSDK 的
venv功能简化了 RISC-V 交叉编译环境的配置流程,替代了手动设置环境变量和路径的步骤。 提供了一个高度集成的工具链,涵盖了从编译到模拟的各个环节。使用ruyi install安装 GNU RISC-V 工具链和 QEMU 模拟器时,整个过程顺利且高效。 - vs code插件通过图形化界面替代了底层 CLI 命令,实现了包管理与虚拟环境配置的可视化,降低了 RISC-V 交叉编译环境的搭建复杂度。
- RuyiSDK 的
-
在安装过程中,我主要关注到了以下问题:
-
新手可能不清楚 Windows 环境下需要先使用 WSL / Linux 环境;
-
初次接触 RISC-V 工具链时,对 toolchain、profile、venv、QEMU 等概念可能需要更友好的解释;
-
如果能提供“Windows 用户从零开始安装”的单独教程,可能会降低新用户的上手成本。
-




