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
验证是否设置成功
如图 则表示成功
下载网址: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
将代码放入
#includeint main(void){printf("hello\n");
}
分别使用进行riscv64-unknown-elf-gcc
和qemu-riscv64
编译和执行,结果如下
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
网站标题:riscv虚拟环境搭建基于Ubuntu20服务器-创新互联
路径分享:http://pwwzsj.com/article/pppho.html