编译riscv32-unknown-elf-gcc

最近在搭建一个基于Renode的裸机仿真Demo,基于RISC-V指令集,自定义硬件及软件,无操作系统,因此需要编译RISC-V的工具链。

1. 源码下载

工具链源码下载地址:https://github.com/riscv-collab/riscv-gnu-toolchainhttps://github.com/riscv-collab/riscv-gnu-toolchain

RISC-V GNU编译器工具链提供了两种构建模式,一种是通用的ELF/Newlib工具链,以及更加复杂的Linux-ELF/glibc工具链。本篇只针对我们自己使用的模式进行介绍。

2. 安装依赖项

在编译之前,我们需要安装一些依赖项,这些依赖项信息来自源码地址中的说明:

$ 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

3. 编译riscv32-unknown-elf-gcc

按照我们的仿真要求,我们只需要编译riscv32-unknown-elf-gcc即可,为了节省空间,其他的都不需编译。我们使用的是32bit指令,且只做整数运算,因此配置命令如下:

./configure --prefix=/opt/riscv --disable-linux --with-arch=rv32i

关于RISC-V指令集配置选项,可以参考下图:

上图来自维基百科:https://en.wikipedia.org/wiki/RISC-V

更详细的说明可以参考RISC-V的标准文档,此处不赘述,主要本人也还在摸索期,等搞懂了再做分享:Specifications - RISC-V International  

完成以上配置后,别忘了把安装目录加入环境变量:

echo "PATH=$PATH:/opt/riscv/bin" >> ~/.bashrc
source ~/.bashrc

接下来,进行漫长的编译:

make -j4

耐心等待编译完成后,执行riscv32-unkown-elf-gcc -v命令查询编译信息,结果如下,从中可以看到详细的配置信息。

进入工具链安装目录/opt/riscv/bin,可以看到有如下riscv32-unknown-elf-*系列组件: 

4. 测试

编译一段简单的代码(此处我们用了一个汇编文件baremetal.s进行编译)进行测试:

riscv32-unknown-elf-gcc baremetal.s -ggdb -O0 -o image -ffreestanding -nostdlib

编译成功:

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值