千家信息网

如何搭建RISC-V编译环境与运行环境

发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,如何搭建RISC-V编译环境与运行环境,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。我们现在芯片被美国卡脖子,所以RIS
千家信息网最后更新 2025年01月23日如何搭建RISC-V编译环境与运行环境

如何搭建RISC-V编译环境与运行环境,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

我们现在芯片被美国卡脖子,所以RISC-V是大势所趋。华为鸿蒙提供的编译器(https://repo.huaweicloud.com/harmonyos/compiler/)里也有RISC-V。虽然现在硬件资源比较少,但是通过软件模拟环境,可以提早做好准备。

RISC-V GNU Toolchain

源码获取

要体验RISC-V,首先需要安装交叉编译器。然而国内的网络很差,想要在GitHub上拿到源码(https://github.com/riscv/riscv-gnu-toolchain)编译非常困难。比较庆幸的是Gitee上有镜像(https://gitee.com/mirrors/riscv-gnu-toolchain),每天同步一次。

获取源码:

git clone https://gitee.com/mirrors/riscv-gnu-toolchain.gitcd riscv-gnu-toolchaingit submodule update --init --recursive

然而在我通过Gitee拿代码的时候,子模块下载速度依然非常慢,特别是QEMU里的一个子模块。于是我把QEMU从同步中删除了,因为不影响编译:

git rm --cached QEMUgit submodule update --init --recursive

考虑到下载速度,我把拿到的所有代码放到Gitee上(https://gitee.com/yushulx/riscv-gnu-toolchain)。这个代码库不做更新,只提供给网络差,又需要体验RISC-V的人。需要拿最新代码就去GitHub或者Gitee镜像。

编译安装

接下来就按照官方教程编译。

依赖工具

Ubuntu

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

Fedora/CentOS/RHEL OS

$ sudo yum install autoconf automake python3 libmpc-devel mpfr-devel gmp-devel gawk  bison flex texinfo patchutils gcc gcc-c++ zlib-devel expat-devel

Arch Linux

$ pacman -Syyu autoconf automake curl python3 mpc mpfr gmp gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib expat

OS X

$ brew install python3 gawk gnu-sed gmp mpfr libmpc isl zlib expat
编译GCC

编译riscv64-unknown-elf-gcc:

./configure --prefix=/opt/riscvsudo make

编译64-bitriscv64-unknown-linux-gnu-gcc:

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

编译32-bit:

./configure --prefix=/opt/riscv --with-arch=rv32gc --with-abi=ilp32dsudo make linux

编译32-bit和64-bit:

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

这两个gcc的区别在于,elf-gcc是静态链接,linux-gnu-gcc是动态链接。

RISC-V运行环境

Simulator和Emulator的不同之处在于Emulator提供的是一个完整的模拟环境。

Simulator

首先编译安装pk: https://github.com/riscv/riscv-pk。

然后编译安装spike:https://github.com/riscv/riscv-isa-sim

编译程序

riscv64-unknown-elf-gcc -o hello hello.c

运行

spike $(which pk) hello

注意,如果用riscv64-unknown-linux-gnu-gcc编译,运行会报错:

bbl loadernot a statically linked ELF program

Emulator

下载安装QEMU https://www.qemu.org/download/#source

参考教程运行模拟环境:https://wiki.qemu.org/Documentation/Platforms/RISCV

另外也可以使用tinyemu: https://bellard.org/tinyemu/

Fedora镜像获取:https://dl.fedoraproject.org/pub/alt/risc-v/repo/virt-builder-images/images/

解压镜像:

unxz Fedora-Minimal-Rawhide-*-sda.raw.xz

启动模拟器:

 qemu-system-riscv64 \   -nographic \   -machine virt \   -smp 4 \   -m 2G \   -kernel Fedora-Minimal-Rawhide-*-fw_payload-uboot-qemu-virt-smode.elf \   -bios none \   -object rng-random,filename=/dev/urandom,id=rng0 \   -device virtio-rng-device,rng=rng0 \   -device virtio-blk-device,drive=hd0 \   -drive file=Fedora-Minimal-Rawhide-20200108.n.0-sda.raw,format=raw,id=hd0 \   -device virtio-net-device,netdev=usernet \   -netdev user,id=usernet,hostfwd=tcp::10000-:22

登录用户名riscv,密码fedora_rocks!

拷贝程序到模拟器中:

scp @:/ ./

在模拟器环境中可以正常运行riscv64-unknown-elf-gccriscv64-unknown-linux-gnu-gcc编译出来的程序。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

编译 环境 运行 代码 镜像 模拟器 源码 程序 教程 模块 编译器 网络 速度 链接 体验 同步 帮助 不同 清楚 困难 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 绵阳网络安全等级 赣州市第六届网络安全宣传周活动 数据库简述需求分析的步骤 贴吧 数据库设计 与服务器登录时间不符 湖南省app软件开发薪资 2018年三级网络技术报名 使用r语言爬数据库 硬盘怎么合并保留数据库 java动态查询数据库字段 交警到监测站检查公安网络安全 未来网络安全的隐患 修改游戏本地数值怎么上传服务器 服务器客户端管理端 计算机网络技术提取音乐 保定快运客软件开发公司 如何保服务器电脑安全 阜阳颍泉区网络安全 软件开发广东有限公司招聘 sipgot服务器怎么装插件 web页面设计属于软件开发吗 网络安全app投诉中心 无锡宇野网络技术开发公司 三级网络技术dhcp参数 金融网络安全怎么做 苹果会有未受信任软件开发者 修改游戏本地数值怎么上传服务器 工作环境及网络安全管理 企业管理软件开发教程 美国服务器搭建vpn
0