Ruyi venv

Ruyi venv?

Ruyi venv 是 RuyiSDK 提供的虚拟环境管理工具,专门用于创建和管理 RISC-V 开发环境。它允许开发者在隔离的环境中安装和使用不同的 RISC-V 工具链,避免系统环境冲突。

使用

  1. 查看可用工具链

在创建虚拟环境之前,先查看可用的工具链:

ruyi list

常见工具链包括:

  • gnu-plct: PLCT实验室优化的GNU工具链
  • llvm: LLVM/Clang工具链
  • generic: 通用GNU工具链
  1. 安装所需工具链

如果工具链未安装,需要先安装:

ruyi install gnu-plct
  1. 创建虚拟环境
# 创建名为 my-riscv-env 的虚拟环境
ruyi venv generic ~/projects/my-riscv-env -t gnu-plct

参数说明:

  • generic: 环境类型
  • ~/projects/my-riscv-env: 环境目录路径
  • -t gnu-plct: 指定工具链类型
  1. 激活虚拟环境
cd ~/projects/my-riscv-env
source bin/ruyi-activate

激活后,命令行提示符会显示环境名称(如 «Ruyi ryu-venv»),表示已进入虚拟环境。

  1. 验证环境

在虚拟环境中验证工具链:

# 检查 RISC-V GCC 编译器(使用完整路径)
/home/zxh/.local/share/ruyi/binaries/x86_64/gnu-plct-0.20250912.0/bin/riscv64-plct-linux-gnu-gcc --version

# 检查其他工具
/home/zxh/.local/share/ruyi/binaries/x86_64/gnu-plct-0.20250912.0/bin/riscv64-plct-linux-gnu-objdump --version

注意:虚拟环境中的符号链接可能无法正常工作,建议直接使用工具链的完整路径。

  1. 退出虚拟环境
ruyi-deactivate

常见问题

问题1:找不到工具链目录

错误信息

fatal error: cannot find the installed directory for the toolchain

解决方案

  1. 检查工具链是否已安装:

    ruyi list --is-installed y
    
  2. 如果未安装,先安装工具链:

    ruyi install gnu-plct
    
  3. 更新包索引:

    ruyi update
    

问题2:工具链符号链接无法工作

错误信息

Traceback (most recent call last):
  File "/home/zxh/projects/ryu-venv/bin/riscv64-plct-linux-gnu-gcc", line 6, in <module>
    import ruyi
ModuleNotFoundError: No module named 'ruyi'

解决方案

  • 直接使用工具链的完整路径:

    /home/zxh/.local/share/ruyi/binaries/x86_64/gnu-plct-0.20250912.0/bin/riscv64-plct-linux-gnu-gcc
    
  • 或者将工具链目录添加到PATH环境变量

开发示例

编译简单的 RISC-V 程序
  1. 创建 C 源文件 hello.c
#include <stdio.h>

int main() {
    printf("Hello, RISC-V!\\n");
    return 0;
}
  1. 在虚拟环境中编译(使用完整路径):
/home/zxh/.local/share/ruyi/binaries/x86_64/gnu-plct-0.20250912.0/bin/riscv64-plct-linux-gnu-gcc -o hello hello.c
  1. 检查生成的二进制文件:
file hello
/home/zxh/.local/share/ruyi/binaries/x86_64/gnu-plct-0.20250912.0/bin/riscv64-plct-linux-gnu-objdump -d hello

验证输出

hello: ELF 64-bit LSB pie executable, UCB RISC-V, RVC, double-float ABI, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-riscv64-lp64d.so.1, for GNU/Linux 4.15.0, with debug_info, not stripped

5 个赞

:tada: 送你一个专属title:「产品体验官」!
欢迎谈谈使用感想和优化建议~~~

是在虚拟环境中出现的工具链符号链接无法工作的问题么?
欢迎提供下你的环境信息和出现这个问题的操作步骤,我们看看是否需要改进

1 个赞

不同项目环境要求各不同,venv来提供隔离看起来很实用,之前都没注意到这个venv工具,感谢分享~

1 个赞