riscv虚拟环境搭建 基于Ubuntu20服务器

概述

搭建riscv虚拟环境可以理解为拥有两个功能就可以了:
其一是编译,即将c语言代码(目前好像只支持c语言)编译成能在riscv指令架构下运行的汇编语言和机器语言。
其二是riscv的虚拟,模拟一个riscv板,运行riscv指令,这里使用qemu。

本人环境
在这里插入图片描述

前期准备

面对一个刚刚装好的Ubuntu环境,首先当然是更新

sudo apt update
sudo apt upgrade

安装编译环境

本人这里是安装sifive的交叉编译工具链
sifive官网:https://www.sifive.com/software
可根据自己操作系统找 如图 比如我的是Ubuntu
在这里插入图片描述
安装包你可以先下下来再传到你的Ubuntu,但是云服务器有大小限制,这里就直接在命令行里下载了
为了看起来方便 我先建立了一个riscv文件夹 方法

mkdir riscv
cd riscv

然后从官网下载

wget https://static.dev.sifive.com/dev-tools/freedom-tools/v2020.12/riscv64-unknown-elf-toolchain-10.2.0-2020.12.8-x86_64-linux-ubuntu14.tar.gz?_ga=2.5551280.2018998367.1669891766-2030521401.1668046281

下载好了就可以解压

tar zxvf riscv64-unknown-elf-toolchain-10.2.0-2020.12.8-x86_64-linux-ubuntu14.tar.gz\?_ga\=2.5551280.2018998367.1669891766-2030521401.1668046281

解压之后就多出来一个文件夹,可以把安装包删掉了,rm + 名称
为方便以后,可以把文件夹名称改短一点 ,mv 原名称 现名
我改成了toolchain

mv riscv64-unknown-elf-toolchain-10.2.0-2020.12.8-x86_64-linux-ubuntu14/ toolchain

再进入toolchain文件夹之后,可以看到有 如图
在这里插入图片描述
进入bin文件夹中,可以看到有很编译工具了 如图
在这里插入图片描述
这时候 我们只需设置一下环境变量 就可以直接使用这些工具了
设置环境变量
可以先进入在bin文件夹查看路径
比如我的
在这里插入图片描述
然后复制路径

vim ~/.bashrc

打开bashrc 将光标移动到最后面 按一下 “i”键 变成insert模式 添加内容如下 根据自己的路径改一下 格式是 export PATH=路径:$PATH

export PATH=/home/lighthouse/riscv/toolchain/bin:$PATH

按esc 然后 :wq 退出 要是不大会 可以自行搜索vim使用方法
然后再输入以下指令 使环境变量生效

source ~/.bashrc

可以回到riscv文件夹路径下 使用riscv64-unknown-elf-gcc --version验证是否设置成功
如图 则表示成功
在这里插入图片描述

安装qemu

下载网址:https://download.qemu.org/
我现在的最新版本是7.1
在这里插入图片描述
可以右击复制链接地址 再用wget方法下载 比如我的命令(注意回到riscv文件路径,养成好习惯)
wget https://download.qemu.org/qemu-7.1.0.tar.xz
在这里插入图片描述
同样下载好了之后解压
顺带删除安装包、改名
注意根据你的实际名称操作~

tar xvf qemu-7.1.0.tar.xz
rm qemu-7.1.0.tar.xz 
mv qemu-7.1.0/ qemu

完成后进入qemu文件夹 最后只需要安装编译qemu就好了

./configure 

在执行的过程会碰到一些依赖包没有报错的情况 依次下载就好了
比如 (可以自行百度安装方法)
在这里插入图片描述
以下是我安装的一些安装包以及方法

sudo apt-get install ninja-build
sudo apt-get install libglib2.0-dev
sudo apt-get install libpixman-1-dev

最后进入build文件夹
执行

sudo make
sudo make install

这个过程有一些些久 耐心等待就好了
结束之后 可以回到根目录 通过 qemu-riscv64 --version 验证
在这里插入图片描述
如下表示成功 接下来 我用一个简单的C语言程序 验证环境是否搭建完成

验证

在根目录下 新建一个文件夹 workplace 并新建一个hello.c文件

mkdir workplace 
cd workplace 
touch hello.c
vim hello.c

将代码放入

#include <stdio.h>

int main(void){
        printf("hello\n");
}             

分别使用进行riscv64-unknown-elf-gccqemu-riscv64编译和执行,结果如下
在这里插入图片描述

  • 17
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值