Ubuntu 18.04搭建RISCV和QEMU环境

news2024/12/28 22:33:26

前言

因为公司项目代码需要在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的源码进行编译,同样做些准备工作:

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
git clone https://gitlab.com/qemu-project/qemu.git

结果在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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1342159.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于北三短报文+GNSS的水库大坝形变监测方案

水库大坝是国家水资源利用和调度的关键设施&#xff0c;对于防洪、供水、发电等方面具有重要作用。然而&#xff0c;随着社会的发展和气候的变化&#xff0c;水库大坝的安全性和稳定性日益受到关注。大坝可能会发生变形、沉降等问题&#xff0c;威胁到附近居民的生命财产安全。…

流媒体服务器ZLMediaKit与FFmpeg

流媒体服务器ZLMediaKit与FFmpeg overview 关键字&#xff1a;ZLMediaKit、FFmpeg、srt、vlc 如果想快速拥有自己的流媒体服务器&#xff0c;那么可以使用开源项目自己搭建。开源的流媒体服务器&#xff0c;在国内&#xff0c;GitHub star数量比较高的&#xff1a;srs和ZLMe…

116基于matlab的盲源信号分离

基于matlab的盲源信号分离。FASTICA方法&#xff0c;能够很好的将信号解混&#xff0c;可以替换数据进行分析。具有GUI界面&#xff0c;可以很好的进行操作。程序已调通&#xff0c;可直接运行。 116matlab盲源信号分离FASTICA (xiaohongshu.com)

Linux Debian12安装和使用ImageMagick图像处理工具 常见图片png、jpg格式转webp格式

一、ImageMagick简介 ImageMagick是一套功能强大、稳定而且免费的工具集和开发包。可以用来读、写和图像格式转换&#xff0c;可以处理超过100种图像格式&#xff0c;包括流行的TIFF, JPEG, GIF, PNG, PDF以及PhotoCD等格式。对图片的操作&#xff0c;即可以通过命令行进行&am…

uni-app page新建以及page外观配置

锋哥原创的uni-app视频教程&#xff1a; 2023版uniapp从入门到上天视频教程(Java后端无废话版)&#xff0c;火爆更新中..._哔哩哔哩_bilibili2023版uniapp从入门到上天视频教程(Java后端无废话版)&#xff0c;火爆更新中...共计23条视频&#xff0c;包括&#xff1a;第1讲 uni…

uniapp框架——vue3+uniFilePicker+fastapi实现文件上传(搭建ai项目第二步)

文章目录 ⭐前言&#x1f496; 小程序系列文章 ⭐uni-file-picker 组件&#x1f496; 绑定事件&#x1f496; uploadFile api&#x1f496; 自定义上传 ⭐后端fastapi定义上传接口⭐uniapp开启本地请求代理devServer⭐前后端联调⭐总结⭐结束 ⭐前言 大家好&#xff0c;我是ym…

geemap学习笔记037:分析地理空间数据--坐标格网和渔网

前言 坐标格网&#xff08;Coordinate Grid&#xff09;简称“坐标网”&#xff0c;是按一定纵横坐标间距&#xff0c;在地图上划分的格网&#xff0c;坐标网是任何地图上不可缺少的要素之一。下面将详细介绍一下坐标格网和渔网。 1 导入库并显示地图 import ee import geem…

还在为远程访问一个内网的服务发愁?

下载地址 Windows 64位 (切勿直接在压缩文件中操作,全部解压到一处后再操作,请关闭某60(会胡乱拦截),可用其他任意安全软件)Mac OS X 64位 (给fastnat执行权限 chmod x ./fastnat.. 终端运行二进制,自行百度)Linux 64位 (给fastnat执行权限 chmod x ./fastnat..)Linux/ARM 32位…

Linux操作系统极速入门[常用指令](安装jdk,MySQL,nginx),以及在linux对项目进行部署。

linux概述&#xff1a; Linux是一套免费使用和自由传播的操作系统 我们为什么要学&#xff0c;Linux&#xff1f; 主流操作系统&#xff1a; linux系统版本&#xff1a; 内核版&#xff1a; 由linux核心团队开发&#xff0c;维护 免费&#xff0c;开源 负责控制硬件 发行版&…

【 C语言 】| C程序百例 - 绘制余弦曲线

【 C语言 】| C程序百例 - 绘制余弦曲线 时间&#xff1a;2023年12月29日12:56:29 文章目录 【 C语言 】| C程序百例 - 绘制余弦曲线1.要求2.问题分析与算法设计3.程序3-1.源码3-2.makefile 4.运行 1.要求 在屏幕上用"*"显示0~360的余弦曲线cos(x)曲线。 2.问题分析与…

【C++】vector 基本使用(详解)

目录 一&#xff0c;vector 的介绍 二&#xff0c;vector 的定义 1&#xff0c;vector() 2&#xff0c;vector&#xff08;size_type n, const value_type& val value_type()&#xff09; 3&#xff0c;vector (const vector& x) 4&#xff0c;vector (InputIte…

播放海康摄像头直播流使用笔记

1、将海康摄像头绑定到萤石云平台&#xff0c;并查看直播流 2、项目中使用 1、安装hls cnpm i hls.js 2、封装组件&#xff08;在components文件夹下新建bodyCapture文件夹下index.vue&#xff09; <template><el-dialogtitle"遗体抓拍"class"bo…

git 常用基本命令, reset 回退撤销commit,解决gitignore无效,忽略记录或未记录远程仓库的文件,删除远程仓库文件

git 基本命令 reset 撤销commit https://blog.csdn.net/a704397849/article/details/135220091 idea 中 rest 撤销commit过程如下&#xff1a; Git -> Rest Head… 在To Commit中的HEAD后面加上^&#xff0c;点击Reset即可撤回最近一次的尚未push的commit Reset Type 有三…

Unity 旋转跟随

Unity 使用任意一个局部轴指向目标 效果&#xff1a; 主要用于在编辑器中可视化对象的朝向&#xff0c;同时提供了选择不同轴向的功能。在运行时&#xff0c;物体将根据所选择的轴向朝向目标&#xff0c;并在 Scene 视图中绘制一个带箭头的圆环。 定义轴向枚举&#xff1a;…

学python用哪本书比较好,学python应该买什么书

大家好&#xff0c;小编来为大家解答以下问题&#xff0c;学python用哪本书比较好&#xff0c;学python应该买什么书&#xff0c;今天让我们一起来看看吧&#xff01; 文章目录 一、Python 基础 01-《Python编程&#xff1a;从入门到实践&#xff08;第2版&#xff09;》02-《P…

右键添加 idea 打开功能

1.开始运行regedit 2.找到: HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell _3.开始设置 一、右键shell目录新建项Idea二、右键Idea新建command三、选择Idea 右侧空白出新建字符串 名字为Icon 值填入idea的运行程序地址 四、选择command 默认项填入idea的运行程序地址…

javascript之跳转页面的几种方法?

文章目录 前言代码演示及解释使用location.href属性使用location.assign()方法使用location.replace()方法使用window.open()方法使用document.URL方法 总结 前言 本章学习的是JavaScript中的跳转页面的几种方法 代码演示及解释 使用location.href属性 可以直接将一个新的URL…

LabVIEW的便携式车辆振动测试分析

随着计算机和软件技术的发展&#xff0c;虚拟仪器正逐渐成为机械工业测试领域的主流。在现代机械工程中&#xff0c;特别是车辆振动测试&#xff0c;传统的测试方法不仅设备繁杂、成本高昂&#xff0c;而且操作复杂。为解决这些问题&#xff0c;开发了一款基于美国国家仪器公司…

PostgreSQL 数据库归档最近被问及的问题问题 与 4 毋 处世学

开头还是介绍一下群&#xff0c;如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, Oceanbase, Sql Server等有问题&#xff0c;有需求都可以加群群内&#xff0c;可以解决你的问题。加群请联系 liuaustin3 &#xff0c;&#xff08;共1790人左右 1 2 3 4 5&#xff0…

跑项目报错Cannot find module ‘@babel/preset-env/lib/utils‘

换了电脑之后新电脑 npm install 安装包之后&#xff0c;npm run serve 运行项目出错 &#x1f447;&#x1f447;&#x1f447; npm run serve 运行项目报错 Cannot find module babel/preset-env/lib/utils 根据报错提示查看报错的包路径 可以确定安装的依赖包没有问题&#…