RuyiSDK IDE 使用问题求助文档
参考文档:RuyiSDK 官方文档 - Milkv Duo IDE 使用案例
1. 使用环境
2. 在 LicheePi 4A 上的问题
尝试安装工具链时执行:
ruyi install gnu-milkv-milkv-duo-bin
报错信息:
fatal error: package gnu-milkv-milkv-duo-bin-0.20240731.0+git.67688c7335e7
declares no binary for host linux/riscv64
分析:
3. 在 x86 WSL 上的问题
在 WSL (Ubuntu x86_64) 启动 RuyiSDK IDE,出现错误:
JVM terminated. Exit code=13
/home/knifefire/ruyisdk-0.0.3-linux.gtk.x86_64/ruyisdk//plugins/...
完整日志片段:
JVM terminated. Exit code=13
-jar .../plugins/org.eclipse.equinox.launcher_1.6.900.v20240613-2009.jar
-os linux
-ws gtk
-arch x86_64
-showsplash ...
表现:IDE 无法启动,直接退出。
请问只能使用物理机linux或者虚拟机吗?
6 个赞
会不会是版本的问题?官网看到的最新版本已经是 0.40.0了
2 个赞
打错了,是IDE版本0.03,RuyiSDK版本是最新版
1 个赞
phebe
4
感谢您的反馈!
关于RuyiSDK IDE的支持情况:
目前 RuyiSDK IDE(基于Eclipse,JDK21)目前处于Tier2级别支持,我们内部主要是在Ubuntu 22.04 、24.04 x86_64环境的虚拟机和物理机上做了一些测试和验证,是可以成功启动和运行的。
此外,在RISC-V设备上,曾经在MUSE Book上安装是能够成功启动。
WSL暂不未支持(未做过测试和验证),感谢您提供相关错误信息,根据目前反馈的问题:
```
JVM terminated. Exit code=13
-jar …/plugins/org.eclipse.equinox.launcher_1.6.900.v20240613-2009.jar
-os linux
-ws gtk
-arch x86_64
-showsplash …
```
“JVM terminated. Exit code=13”是Eclipse启动过程中常见的错误,通常与Java虚拟机(JVM)的配置或环境问题有关。
2 个赞
gnu-milkv-milkv-duo-bin 是这样的,这个其实只是对 MilkV 发布的二进制milkv-duo/host-tools进行二次打包分发。可以看到仓库里面只有 x86_64 的二进制,所以 ruyi 二次分发以后也就不会有 riscv64 二进制。
当前确实没有完美的替代方案。一个可以用的方法是用gnu-plct工具链,构建静态链接的二进制,放到MilkV Duo/Duo256 跑。静态链接的原因是gnu-plct是glibc的工具链,而MilkV Duo/Duo256 的镜像是musl。不过印象里 MilkV DuoS 的一些镜像是glibc的,也可以试试 DuoS。
2 个赞
官方文档错误
- 安装指定的工具链代码错误:
ruyi install gnu-milkv-milkv-duo-bin #错误
ruyi install gnu-milkv-milkv-duo-musl-bin #正确
-
Makefile内容错
-
直接复制会有格式错误,需要把其中两行前的空格替换成Tab
-
Makefile执行错
#原文档
# Eclipse 工具链设置
#TOOLCHAIN_PREFIX := ~/milkv/duo/duo-examples/host-tools/gcc/riscv64-linux-musl-x86_64/bin/riscv64-unknown-linux-musl-
TOOLCHAIN_PREFIX := ~/.local/share/ruyi/binaries/x86_64/gnu-milkv-milkv-duo-musl-bin-0.20240731.0+git.67688c7335e7/bin/riscv64-unknown-linux-musl-
# 编译选项-O3
#CFLAGS := -mcpu=c906fdv -march=rv64imafdcv0p7xthead -mcmodel=medany -mabi=lp64d -DNDEBUG -I/home/phebe/milkv/duo/duo-examples/include/system
#LDFLAGS := -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -L/home/phebe/milkv/duo/duo-examples/libs/system/musl_riscv64
CFLAGS := -mcpu=c906fdv -march=rv64imafdcv0p7xthead -g #-mcpu=c906fdv -march=rv64imafdcv0p7xthead : One of the two must be set
LDFLAGS :=
TARGET=helloworld
ifeq (,$(TOOLCHAIN_PREFIX))
$(error TOOLCHAIN_PREFIX is not set)
endif
ifeq (,$(CFLAGS))
$(error CFLAGS is not set)
endif
CC = $(TOOLCHAIN_PREFIX)gcc
SOURCE = $(wildcard *.c)
OBJS = $(patsubst %.c,%.o,$(SOURCE))
# 默认目标
all: $(TARGET)
$(TARGET): $(OBJS)
$(CC) $(CFLAGS) -o $@ $(OBJS) $(LDFLAGS)
%.o: %.c
$(CC) $(CFLAGS) -o $@ -c $<
# 上传目标
upload: $(TARGET)
scp $(TARGET) root@192.168.42.1:/root/target/$(TARGET)
.PHONY: clean upload
clean:
rm -f *.o $(TARGET)
# 让 'all' 目标依赖于 'upload',以便在构建后自动上传
all: upload
#改正
TOOLCHAIN_PREFIX := ~/.local/share/ruyi/binaries/x86_64/gnu-milkv-milkv-duo-musl-bin-0.20240731.0+git.67688c7335e7/bin/riscv64-unknown-linux-musl-
CFLAGS := -mcpu=c906fdv -march=rv64imafdcv0p7xthead -g
LDFLAGS :=
TARGET = helloworld
CC = $(TOOLCHAIN_PREFIX)gcc
SOURCE = $(wildcard *.c)
OBJS = $(patsubst %.c,%.o,$(SOURCE))
all: $(TARGET)
$(TARGET): $(OBJS)
$(CC) $(CFLAGS) -o $@ $(OBJS) $(LDFLAGS)
%.o: %.c
$(CC) $(CFLAGS) -o $@ -c $<
upload: $(TARGET)
scp $(TARGET) root@192.168.42.1:/root/target/$(TARGET)
clean:
rm -f *.o $(TARGET)
.PHONY: all clean upload
-
“调试”中的Makefile也有类似问题:
#原文档
# Eclipse 工具链设置
#TOOLCHAIN_PREFIX := ~/milkv/duo/duo-examples/host-tools/gcc/riscv64-linux-musl-x86_64/bin/riscv64-unknown-linux-musl-
TOOLCHAIN_PREFIX := ~/.local/share/ruyi/binaries/x86_64/gnu-milkv-milkv-duo-musl-bin-0.20240731.0+git.67688c7335e7/bin/riscv64-unknown-linux-musl-
# 编译选项-O3 -static
#CFLAGS := -mcpu=c906fdv -march=rv64imafdcv0p7xthead -mcmodel=medany -mabi=lp64d -DNDEBUG -I~/milkv/duo/duo-examples/include/system
#LDFLAGS := -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -L/home/phebe/milkv/duo/duo-examples/libs/system/musl_riscv64
CFLAGS := -march=rv64imafdcv0p7xthead -g
LDFLAGS :=
TARGET=sumdemo
ifeq (,$(TOOLCHAIN_PREFIX))
$(error TOOLCHAIN_PREFIX is not set)
endif
ifeq (,$(CFLAGS))
$(error CFLAGS is not set)
endif
CC = $(TOOLCHAIN_PREFIX)gcc
SOURCE = $(wildcard*.c)
OBJS = $(patsubst%.c,%.o,$(SOURCE))
# 默认目标
all: $(TARGET)
$(TARGET): $(OBJS)
$(CC)$(CFLAGS) -o $@$(OBJS)$(LDFLAGS)
%.o: %.c
$(CC)$(CFLAGS) -o $@ -c $<
# 上传目标
upload: $(TARGET)
scp $(TARGET) root@192.168.42.1:/root/target/$(TARGET)
.PHONY: clean upload
clean:
rm -f *.o $(TARGET)
# 让 'all' 目标依赖于 'upload',以便在构建后自动上传
all: upload
#改正
# 工具链前缀
TOOLCHAIN_PREFIX := ~/.local/share/ruyi/binaries/x86_64/gnu-milkv-milkv-duo-musl-bin-0.20240731.0+git.67688c7335e7/bin/riscv64-unknown-linux-musl-
# 编译选项
CFLAGS := -mcpu=c906fdv -march=rv64imafdcv0p7xthead -g
LDFLAGS :=
# 目标文件名
TARGET = sumdemo
# 编译器
CC = $(TOOLCHAIN_PREFIX)gcc
# 源文件与目标文件
SOURCE = $(wildcard *.c)
OBJS = $(patsubst %.c,%.o,$(SOURCE))
# 默认目标
all: $(TARGET)
$(TARGET): $(OBJS)
$(CC) $(CFLAGS) -o $@ $(OBJS) $(LDFLAGS)
%.o: %.c
$(CC) $(CFLAGS) -o $@ -c $<
# 上传目标
upload: $(TARGET)
scp $(TARGET) root@192.168.42.1:/root/target/$(TARGET)
# 清理
clean:
rm -f *.o $(TARGET)
.PHONY: all clean upload
pr:ruyisdk/docs#108
4 个赞
phebe
7
非常感谢您的反馈和贡献 
工具链部分确实存在安装和makefile中的不一致的问题,非常感谢
我们会安排人继续看看是否还有其他问题,如果您还记得具体的报错内容,可以贴出来看看
您提交的pr目前已经在推进了,看起来是格式等问题导致了构建CI的错误,如果有空可以再看看。如果需要帮助,也可以随时联系 
2 个赞
我使用typora修改md文件后,当时并没有格式问题,但是push后再次打开就会出现格式问题,正文跑到代码块去了,不知道为什么,重复几次都这样
1 个赞