Ubuntu 18.04搭建RISCV和QEMU环境

2023-12-30 11:20

本文主要是介绍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
首先将项目克隆到本地:

git clone https://github.com/riscv/riscv-gnu-toolchain

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

$ 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,需要写入权限,例如:

sudo mkdir /opt/riscv
sudo chmod 777 /opt/riscv

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

cd riscv-gnu-toolchain
mkdir build
cd build
../configure --prefix=/opt/riscv --enable-multilib
make linux 

完成后就能在/opt/riscv/bin文件夹下看到如下内容:
在这里插入图片描述
然后配置bashrc,在bashrc中添加路径:

export PATH=$PATH:/opt/riscv/bin

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

#include <stdio.h>void main() {printf("%s\n","hello RISCV");
}

然后编译:

riscv64-unknown-linux-gnu-gcc hello.c -o hello

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

安装QEMU

riscv-gnu-toolchain文件夹里也有个qmeu的文件夹,根据.gitmodules里的内容:
在这里插入图片描述
我们也可以从GitLab上下载QEMU的源码进行编译,同样做些准备工作:

git clone https://gitlab.com/qemu-project/qemu.git
sudo mkdir /opt/qemu
sudo chmod 777 /opt/qemu

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

cd build
../configure --prefix=/opt/qemu
make
make install

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

在这里插入图片描述

在这里插入图片描述
解决方法:

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分支:

git checkout stable-7.2

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

在这里插入图片描述
然后配置bashrc,在bashrc中添加:

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

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

qemu-riscv64 hello

这篇关于Ubuntu 18.04搭建RISCV和QEMU环境的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/552670

相关文章

在Ubuntu上部署SpringBoot应用的操作步骤

《在Ubuntu上部署SpringBoot应用的操作步骤》随着云计算和容器化技术的普及,Linux服务器已成为部署Web应用程序的主流平台之一,Java作为一种跨平台的编程语言,具有广泛的应用场景,本... 目录一、部署准备二、安装 Java 环境1. 安装 JDK2. 验证 Java 安装三、安装 mys

Mycat搭建分库分表方式

《Mycat搭建分库分表方式》文章介绍了如何使用分库分表架构来解决单表数据量过大带来的性能和存储容量限制的问题,通过在一对主从复制节点上配置数据源,并使用分片算法将数据分配到不同的数据库表中,可以有效... 目录分库分表解决的问题分库分表架构添加数据验证结果 总结分库分表解决的问题单表数据量过大带来的性能

Java汇编源码如何查看环境搭建

《Java汇编源码如何查看环境搭建》:本文主要介绍如何在IntelliJIDEA开发环境中搭建字节码和汇编环境,以便更好地进行代码调优和JVM学习,首先,介绍了如何配置IntelliJIDEA以方... 目录一、简介二、在IDEA开发环境中搭建汇编环境2.1 在IDEA中搭建字节码查看环境2.1.1 搭建步

如何评价Ubuntu 24.04 LTS? Ubuntu 24.04 LTS新功能亮点和重要变化

《如何评价Ubuntu24.04LTS?Ubuntu24.04LTS新功能亮点和重要变化》Ubuntu24.04LTS即将发布,带来一系列提升用户体验的显著功能,本文深入探讨了该版本的亮... Ubuntu 24.04 LTS,代号 Noble NumBAT,正式发布下载!如果你在使用 Ubuntu 23.

什么是 Ubuntu LTS?Ubuntu LTS和普通版本区别对比

《什么是UbuntuLTS?UbuntuLTS和普通版本区别对比》UbuntuLTS是Ubuntu操作系统的一个特殊版本,旨在提供更长时间的支持和稳定性,与常规的Ubuntu版本相比,LTS版... 如果你正打算安装 Ubuntu 系统,可能会被「LTS 版本」和「普通版本」给搞得一头雾水吧?尤其是对于刚入

如何安装 Ubuntu 24.04 LTS 桌面版或服务器? Ubuntu安装指南

《如何安装Ubuntu24.04LTS桌面版或服务器?Ubuntu安装指南》对于我们程序员来说,有一个好用的操作系统、好的编程环境也是很重要,如何安装Ubuntu24.04LTS桌面... Ubuntu 24.04 LTS,代号 Noble NumBAT,于 2024 年 4 月 25 日正式发布,引入了众

Ubuntu 怎么启用 Universe 和 Multiverse 软件源?

《Ubuntu怎么启用Universe和Multiverse软件源?》在Ubuntu中,软件源是用于获取和安装软件的服务器,通过设置和管理软件源,您可以确保系统能够从可靠的来源获取最新的软件... Ubuntu 是一款广受认可且声誉良好的开源操作系统,允许用户通过其庞大的软件包来定制和增强计算体验。这些软件

如何安装HWE内核? Ubuntu安装hwe内核解决硬件太新的问题

《如何安装HWE内核?Ubuntu安装hwe内核解决硬件太新的问题》今天的主角就是hwe内核(hardwareenablementkernel),一般安装的Ubuntu都是初始内核,不能很好地支... 对于追求系统稳定性,又想充分利用最新硬件特性的 Ubuntu 用户来说,HWEXBQgUbdlna(Har

Ubuntu 24.04 LTS怎么关闭 Ubuntu Pro 更新提示弹窗?

《Ubuntu24.04LTS怎么关闭UbuntuPro更新提示弹窗?》Ubuntu每次开机都会弹窗提示安全更新,设置里最多只能取消自动下载,自动更新,但无法做到直接让自动更新的弹窗不出现,... 如果你正在使用 Ubuntu 24.04 LTS,可能会注意到——在使用「软件更新器」或运行 APT 命令时,

Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)

《Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)》:本文主要介绍Python基于火山引擎豆包大模型搭建QQ机器人详细的相关资料,包括开通模型、配置APIKEY鉴权和SD... 目录豆包大模型概述开通模型付费安装 SDK 环境配置 API KEY 鉴权Ark 模型接口Prompt