当前位置: 首页 > news >正文

RISC-V交叉工具链riscv-gnu-toolchain编译

文章目录

    • 1、下载
    • 2、编译
      • 1. 依赖安装
      • 2. 编译
    • 3、运行

1、下载

$ sudo apt-get install git wget build-essential 
$ git clone https://github.com/riscv-collab/riscv-gnu-toolchain
$ git checkout 2023.06.02

注意上面 clone 的仓库,我们称其为构建脚本仓库,其并不包含 gcc 等工具源码,这些源码以 git 的 submodule 的形式作为子仓库的内容发布,所以需要继续更新子仓库。

$ git submodule update --init --recursiveSubmodule 'binutils' (https://sourceware.org/git/binutils-gdb.git) registered for path 'binutils'
Submodule 'dejagnu' (https://git.savannah.gnu.org/git/dejagnu.git) registered for path 'dejagnu'
Submodule 'gcc' (https://gcc.gnu.org/git/gcc.git) registered for path 'gcc'
Submodule 'gdb' (https://sourceware.org/git/binutils-gdb.git) registered for path 'gdb'
Submodule 'glibc' (https://sourceware.org/git/glibc.git) registered for path制作交叉工具链 riscv-gnu-toolchain

注意:
使用上诉命令通过 submodule 方式下载困难的话,可以手工通过下载并切换到指定的分支。如 binutils 可通过以下方式下载并切换到指定的分支,地址和分支可以在根目录下的 .gitignore 文件中获取。

$ git clone https://sourceware.org/git/binutils-gdb.git binutils
$ git checkout binutils-2_40-branch

2、编译

1. 依赖安装

$ sudo apt-get install -y 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

2. 编译

riscv-gnu-toolchain 支持通过不同的编译命令和参数,生成不同版本的 toolchain。
分别支持:

  • 32bit 和 64bit
  • Newlib、glibc 和 musl 版本
  1. 编译 Newlib 版本:使用 make 命令
$ ./configure --prefix=${PWD}/riscv-newlib
$ make -j8

编译完成后,在 ${PWD}/riscv-newlib/bin 目录下生成 riscv64-unknown-elf-gcc

  1. 编译 glibc 版本:使用 make linx 命令
$ ./configure --prefix=${PWD}/riscv64-linux
$ make linux -j8

默认编译的版本为 RV64GC (64-bit), 需要编译 RV32GC (32bit) 版本可以使用以下命令编译

$ ./configure --prefix=${PWD}/riscv32-linux --with-arch=rv32gc --with-abi=ilp32d
$ make linux -j8
  • 支持的架构是rv32i或rv64i加上标准扩展 a/m/f/d/g
  • 支持的ABI是ilp32(32位软浮点),ilp32d(32位硬浮点),ilp32f(32位,在寄存器中使用单精度,在内存中使用双精度,仅限特定用途),lp64,lp64f,lp64d(相同,但使用64位长和指针)。
  1. 编译 musl libc 版本:使用 make musl 命令
$ ./configure --prefix=${PWD}/riscv64-musl
$ make musl -j8
  1. 同时编译支持 32bit 和 64bit 版本
$ ./configure --prefix=${PWD}/riscv --enable-multilib

然后使用 makemake linuxmake musl 编译对应的版本。

注:
musl 只支持 64bit 系统。

更多的配置信息可以通过 ./configure --help 查看。

3、运行

测试 toolchain 是否安装成功

$ riscv64-unknown-linux-gnu-gcc -v
http://www.lryc.cn/news/150717.html

相关文章:

  • 我能“C“——指针进阶(上)
  • SQLServer2008数据库还原失败 恢复失败
  • 【微服务部署】04-ForwardedHeaders
  • JVM 垃圾收集器
  • CSS 样式使用link和@import有什么区别
  • LeetCode-2511-最多可以摧毁的敌人城堡数目
  • iOS开发Swift-2-图片视图、App图标-赏月App
  • node18 vue2启动报错 error:0308010C:digital envelope routines::unsupported
  • Java8实战-总结18
  • ARM编程模型-指令流水线
  • 邮件营销:高效的节日宣传方式
  • Leetcode109. 有序链表转换二叉搜索树
  • 基于Googlenet深度学习网络的人脸身份识别matlab仿真
  • vue2 生命周期,工程化开发入门
  • Elasticsearch 分布式搜索——聚合
  • 苹果将在iPhone16系列中引入微透镜阵列技术,亮度更高、功耗更低
  • Window10 安装 Lua
  • Centos替代方案分析(Ubuntu篇)
  • 关于计数以及Index返回订单号升级版可以控制年月日累计(不重复)(sqlite)
  • 前端实现在线预览文件
  • 海外有哪些流行的支付方式?
  • 服务器数据恢复-重组RAID导致RAID6数据丢失的数据恢复案例
  • Redis数据库持久化---RDB(Redis DataBase)概念与实操
  • 分部署存储Ceph
  • 项目:点餐系统3mysql知识回顾MySQL客户端
  • docker命令学习
  • 【STM32教程】第二章 通用输入输出口GPIO
  • 2023.9 - java - ArrayList
  • 记1次前端性能优化之CPU使用率
  • 记一次postgres导致cpu100%