Ubuntu RISC-V 编译环境搭建 芯来RISCV Nuclei GNU Tool chain

一、操作步骤

下载地址

https://www.nucleisys.com/download.php

我的电脑是ubuntu20.04 下载Nuclei GNU Tool chain ubuntu x86-64版本

解压缩

tar jxvf nuclei_riscv_newlibc_prebuilt_linux64_2022.08.tar.bz2

然后要设置一下环境变量才能在任何路径下使用该应用/软件

这个下载的工具链压缩包 解压缩后的文件名是 gcc 找到gcc里面的bin文件夹可以看到所有的应用程序都在这个文件夹里,那么这个文件夹地址就是要设置的环境变量地址

可以在终端打开这个bin文件夹使用 pwd命令查看地址

sudo vim /etc/profile   

export PATH="/home/liwanwan/gcc/bin:$PATH"    //改成自己文件的地址,添加环境变量
:wq     //保存并退出

source /etc/profile  //使环境变量生效
echo $PATH          //查看有没有成功添加环境变量

二、测试安装是否成功

1. 编写c测试程序

随便写一个c程序测试一下是否能编译成功

mkdir test      
cd test    
vim mul.c   //建立一个名为mul.c的c文件

 这是一个名为dmul的函数,它有两个参数,均为double类型

#include<stdio.h>

double dmul(double a, double b)
{
        return b*a;
}

2. 编译执行

使用-march=rv64imafdc和-mabi=lp64d的组合进行编译

riscv-nuclei-elf-gcc mul.c -march=rv64imafdc -mabi=lp64d -o- -S -O3

生成的汇编代码如下:

dmul:
	fmul.d	fa0,fa1,fa0
	ret

从中可以看出,对于浮点数的乘法操作,直接使用RISC-V的fuml.d指令进行支持,且函数两个double类型的参数直接使用浮点数通用寄存器(fa0和fa1)进行传递,这是因为:

-march选项指明了目标平台支持的模块化指令子集为imafdc,其中包含了F和D指令子集,即支持单精度浮点数指令和双精度浮点数指令,因此可以使用RISCV的浮点数指令来支持对浮点数的操作;

-mapi选项后缀“d”,表示当浮点数作为函数的参数进行传递时,无论是单精度浮点数还是双精度浮点数,均可直接通过寄存器进行传递

-march和-mabi的选项值要根据目标平台的需求来定

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值