在Ubuntu 20.04上构建RISC-V和QEMU环境

先从RISC-V GNU工具链开始。我们需要GCC,GDB,binutils等工具,先更新你的Ubuntu系统

sudo apt update
sudo apt upgrade

然后,安装依赖库:

sudo apt install autoconf automake autotools-dev curl libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev

接下来,从GitHub clone RISC-V的GNU工具链:

一旦我们的“装备”准备就绪,我们便可以开始编译这个工具链,切换到 riscv-gnu-toolchain目录下,运行:

./configure --prefix=/opt/riscv
make linux

第二步,未知领地的“地图”——我们需要一个测试环境来验证我们的工具链是否正确安装,这就需要QEMU的支持。首先,安装QEMU所需的依赖库:

sudo apt install git libglib2.0-dev libfdt-dev libpixman-1-dev zlib1g-dev

然后,我们从QEMU的GitHub仓库获取源代码:

git clone https://github.com/qemu/qemu.git
cd qemu

我们需要对QEMU进行编译和安装,运行:

./configure --target-list=riscv64-softmmu,riscv32-softmmu
make
sudo make install

但是出现了以下问题:

这个错误信息表明你在尝试构建或安装Python项目时遇到了问题,具体是缺少 ensurepip 模块。ensurepip 是Python 3.4及以上版本中引入的标准库模块,用于确保pip和setuptools在Python安装中可用。

sudo apt-get update
sudo apt-get install python3-venv

这样,QEMU的安装步骤就完成了,是时候测试我们的工具链和模拟器是否正确运行了。

第三步,尽情驰骋!演练一下,泡一杯茶,转动你的大脑。让我们一起写一个简单的'RISC-V hello world'程序:

#include <stdio.h>
int main() {
    printf("Hello, RISC-V!\n");
    return 0;
}

将此代码保存为 hello.c,然后使用RISC-V的GCC编译它:

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

是时候启动QEMU,验证所有东西是否正常运行了。你可以在另一个终端运行:

qemu-riscv64 hello

然而在运行这段代码时,出现了以下错误

node: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34‘ not found (required by node)

说明GLIBC的版本不对,需要下载对应的版本进行安装

wget  https://mirror.bjtu.edu.cn/gnu/libc/glibc-2.34.tar.xz

tar -xf glibc-2.34.tar.xz -C /usr/local

cd /usr/local/glibc-2.34/

mkdir build

cd build/
../configure --disable-sanity-checks
make
make install

再次运行时又出现以下错误,

原因是找不到libc.so.6这个文件,我们可以先执行:

find / -name "libc.so.6"

找到2.34版本的libc.so.6路径

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/mips-linux-gnu/lib

使其生效

source /etc/profile

发现还是报错,查找原因后发现是:qemu-riscv64会在/lib下搜索riscv64的动态链接,而我们编译的riscv链接在/opt/riscv/sysroot里面。 

我们可以手动指定动态链接库

qemu-riscv64 -L /opt/riscv/sysroot/ hello

结果如下,成功运行 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值