Ubuntu 18.04搭建RISCV和QEMU环境

前言

因为公司项目代码需要在RISCV环境下测试,因为没有硬件实体,所以在Ubuntu 18.04上搭建了riscv-gnu-toolchain + QEMU模拟器环境。

安装riscv-gnu-toolchain

riscv-gnu-toolchain可以从GitHub上下载源码编译,地址为:https://github.com/riscv-collab/riscv-gnu-toolchain

首先将项目克隆到本地:

bash 复制代码
git clone https://github.com/riscv/riscv-gnu-toolchain

在编译前需要实现安装些依赖项目:

bash 复制代码
$ sudo apt-get install autoconf automake autotools-dev curl python3 python3-pip libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev ninja-build git cmake libglib2.0-dev

创建riscv文件夹,存放编译后的toolchain,需要写入权限,例如:

bash 复制代码
sudo mkdir /opt/riscv
sudo chmod 777 /opt/riscv

然后可以在克隆下的riscv-gnu-toolchain文件夹里创建buid文件夹,进行编译,过程花很多时间,需要耐心等待:

bash 复制代码
cd riscv-gnu-toolchain
mkdir build
cd build
../configure --prefix=/opt/riscv --enable-multilib
make linux 

完成后就能在/opt/riscv/bin文件夹下看到如下内容:

然后配置bashrc,在bashrc中添加路径:

bash 复制代码
export PATH=$PATH:/opt/riscv/bin

接下来就能测试下riscv gcc的编译,创建一个hello.c文件,内容如下:

c 复制代码
#include <stdio.h>

void main() {
  printf("%s\n","hello RISCV");
}

然后编译:

bash 复制代码
riscv64-unknown-linux-gnu-gcc hello.c -o hello

编译无报错,生成可执行文件是无法直接运行的,加下来需要安装QEMU。

安装QEMU

riscv-gnu-toolchain文件夹里也有个qmeu的文件夹,根据.gitmodules里的内容:

我们也可以从GitLab上下载QEMU的源码进行编译,同样做些准备工作:

bash 复制代码
git clone https://gitlab.com/qemu-project/qemu.git
bash 复制代码
sudo mkdir /opt/qemu
sudo chmod 777 /opt/qemu

GitLab直接克隆下的master分支应该是最新版本8.2.0版本的,这里博主就遇到了一个坑,先在riscv-gnu-toolchain/qemu创建build目录,然后运行:

bash 复制代码
cd build
../configure --prefix=/opt/qemu
make
make install

结果在configure的时候有一些报错,例如下面的要使用python3.8,要安装python模块的等:

解决方法:

bash 复制代码
sudo apt install python3.8
pip install distlib
sudo ln -sf /usr/bin/pyhton3.8 /usr/bin/pyhton

费了好大劲解决了配置问题,结果编译没有通过。用git branch -a命令查看发现QEMU还有其他stable的分支:

然后果断用下面命令切换到了stable-7.2分支:

bash 复制代码
git checkout stable-7.2

然后重新configure和编译,编译成功,然后我们就能在/opt/qemu/bin下看到:

然后配置bashrc,在bashrc中添加:

bash 复制代码
export PATH=$PATH:/opt/qemu/bin
export QEMU_LD_PREFIX=/opt/riscv/sysroot # 否则qemu-riscv64会在/lib下搜索riscv64的动态链接

source bashrc之后我们就可以运行原来编译出的hello程序:

bash 复制代码
qemu-riscv64 hello
相关推荐
楚枫默寒4 小时前
Linux 编辑文件后自动添加修改日期
linux·运维·bash
苦青藤5 小时前
从零搭建 WSUS 隔离网络:完整实战指南(内网离线补丁分发)
运维·windows·microsoft
2601_961194027 小时前
27考研刘晓艳单词pdf
linux·sql·ubuntu·华为·pdf·.net
2023自学中8 小时前
imx6ull 开发板 推流ov5640数据,虚拟机用 ffplay 拉流播放
linux·音视频·嵌入式·开发板
shandianchengzi9 小时前
【记录】Ghidra|Ubuntu 26.04 下 Ghidra 界面缩放完整指南
linux·ubuntu·逆向·ghidra
天天进步20159 小时前
Python全栈项目--Python自动化运维工具开发
运维·python·自动化
Soari9 小时前
Ubuntu 根分区文件系统损坏,系统启动时自动检查失败
linux·运维·ubuntu
杨云龙UP9 小时前
Oracle Health Check巡检脚本使用SOP V2.0:从HTML原始报告→生成Word专业巡检报告→交付客户_2026-06-03
linux·运维·数据库·sql·oracle·报告·巡检
广州灵眸科技有限公司9 小时前
瑞芯微RV1126B开发板(EASY-EAI-PI2) Linux虚拟机准备
linux·运维·服务器
Lana学习中10 小时前
【运维杂记】连接不上远程服务器的问题处理
运维·服务器