riscv

您所在的位置:网站首页 qemu工具链 riscv

riscv

2023-08-24 15:07| 来源: 网络整理| 查看: 265

riscv-gnu-toolchain工具链下载安装 一、安装依赖二、下载riscv-gnu-toolchain三、编译安装riscv-gnu-toolchain四、添加环境变量五、测试安装是否成功

一、安装依赖 sudo apt-get 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

特别重要的一个依赖!单独说:

sudo apt-get install libnewlib-dev 二、下载riscv-gnu-toolchain

RISCV平台的C/C++交叉编译器 源代码地址:https://github.com/riscv/riscv-gnu-toolchain riscv工具链整个工程太大,在github下载再递归下载子文件夹,以国内的网络很容易超时断开。一般去码云gitee上面找镜像文件 国内的镜像地址:

git clone https://gitee.com/mirrors/riscv-gnu-toolchain.git

几个riscv-*子模块的gitee镜像地址:

Submodule 'riscv-binutils' (https://gitee.com/mirrors/riscv-binutils-gdb.git) registered for path 'riscv-binutils' Submodule 'riscv-dejagnu' (https://gitee.com/mirrors/riscv-dejagnu.git) registered for path 'riscv-dejagnu' Submodule 'riscv-gcc' (https://gitee.com/mirrors/riscv-gcc.git) registered for path 'riscv-gcc' Submodule 'riscv-gdb' (https://gitee.com/mirrors/riscv-binutils-gdb.git) registered for path 'riscv-gdb' Submodule 'riscv-glibc' (https://gitee.com/mirrors/riscv-glibc.git) registered for path 'riscv-glibc' Submodule 'riscv-newlib' (https://gitee.com/mirrors/riscv-newlib.git) registered for path 'riscv-newlib'

一共有7个submoule,先处理riscv-**开头的几个 比如:riscv-newlib,在/…/riscv-gnu-toolchain目录下

git clone --recursive https://gitee.com/mirrors/riscv-newlib.git

其他几个riscv-*的模块参照此方法自行修改

PS:.riscv-binutils与riscv-gdb来自于同一个仓库,且与本地要求的文件夹名称不同,需用命令指定本地名,riscv-gdb同理。

git clone --recursive https://gitee.com/mirrors/riscv-binutils-gdb.git riscv-binutils 三、编译安装riscv-gnu-toolchain

进入到riscv-gnu-toolchain的文件目录下,执行

cd riscv-gnu-toolchian ./configure --prefix=/opt/riscv //#--prefix后面是你想要安装的位置,opt文件夹下默认是应用程序 sudo make -jN //#考虑到opt文件夹创建文件和删除文件需要用root权限

编译大概一个小时。 扩展内容: 上述编译会默认生成riscv64-unknown-linux-gnu-gcc版本的交叉编译器,但我们需要riscv64-unknown-elf-gcc。 riscv gcc可以编译成以下几个版本:

#riscv32-unknown-elf-gcc #这是Newlib交叉编译器,针对riscv32架构 ./configure --prefix=/opt/riscv32 --with-arch=rv32imc --with-abi=xxx make #--mabi可以选择如下: #ilp32 #ilp32f #ilp32d #riscv64-unknown-elf-gcc #这是Newlib交叉编译器,针对riscv64架构,编译riscv-tools需要用到 #默认64位 因此可以不要后面的内容 ./configure --prefix=/opt/riscv64 make #riscv32-unknown-linux-gnu-gcc #这是Linux交叉编译器,使用的C运行库为linux中的标准glibc ./configure --prefix=/opt/riscv --with-arch=rv32gc --with-abi=ilp32d make linux #riscv64-unknown-linux-gnu-gcc #riscv64-multilib-elf-gcc #riscv64-liunx-multilib-gcc 四、添加环境变量

最后添加环境变量,才能在任何路径下使用该应用/软件。

vim ~/.bashrc //#然后添加语句 export PATH=/opt/riscv/bin:$PATH //#保存并更新环境 :wq source ~/.bashrc 五、测试安装是否成功

方法一:执行下面命令,出现gcc的版本号

riscv64-unknown-elf-gcc --version

方法二:去到一个不重要的路径新建c程序,使用交叉编译器编译。

echo -e '#include \n int main(void) { printf("Helloworld!\\n"); return 0; }' > hello.c riscv64-unknown-elf-gcc -o hello hello.c #或者riscv64-unknown-linux-gnu-gcc -o hello hello.c

如果出现hello可执行文件即为成功。 参考文件: https://blog.csdn.net/weixin_48156266/article/details/123663977 https://blog.csdn.net/qq_35990574/article/details/110006307 https://blog.csdn.net/shensen0304/article/details/95504258



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3