riscv-gnu-toolchain 下载、编译
本文最后更新于:Wednesday, September 30th 2020, 8:18 pm
1、前言
riscv-gnu-toolchain 是学习 risc-v 的前提,但是网上对这方面的介绍很少,并且工具链种类繁多,很可能让我们摸不清头脑。
2、下载篇
由于
riscv-gnu-toolchain包含有好多第三方库,整个项目文件很大[官方说的是6.65GB],加上国内GitHub堪比🐢速,你多半是不可能按官方教程下下来。
| 项目名称 | 项目描述 | 项目用途 |
|---|---|---|
| qemu | 模拟器(类似bochs,PearPC) | |
| riscv-binutils | 开发工具(compiler、assemble、linker、debugger…) | |
| riscv-dejagnu | 测试其它程序的框架(framework) | |
| riscv-gcc | GNU Compiler Collection | |
| riscv-gdb | 同riscv-binutils | |
| riscv-glibc | GNU C Library(system-API,其它的语言也通过它访问OS) | |
| riscv-newlib | 一套开发工具(用的库有别于riscv-binutils) |
binutils 和 newlib 之间的区别(坑待填o_o ….)
Prerequisites
PC: x86
OS: Ubuntu 20.04.1 LTS
VM: wmware15.5Pro
下载源代码(推荐使用
hub.fastgit.org镜像站,比原生站快几百倍)1
2
3git clone https://hub.fastgit.org/riscv/riscv-gnu-toolchain
cd riscv-gnu-toolchain
git submodule update --init --recursive安装依赖(其它系统查看官方readme)
1
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下载失败解决方案
git clone qemu下载速度太慢导致失败(因为qemu没有把项目托管在GitHub上)
下载源码, 解压到相应的目录上即可。
其它模块没有拉下来。
在源项目下挨个手动克隆。
1
2cd ~/riscv/riscv-gnu-toolchain
git clone https://hub.fastgit.org/riscv/riscv-gcc.git
3、编译篇
1、Newlib
建立一个安装路径:makdir /opt/riscv
[最好建立一个编译文件夹]:makdir build && cd build
配置环境变量:export PATH=$PATH:/opt/riscv/bin(建议写到~/.bashrc上,永久有效
1
2./configure --prefix=/opt/riscv
make2、Linux
跟上面相同的步骤,不过最好换一个干净的文件夹。
默认是安装RV64GC(64-bit), 即使在32-bit的构建环境中。
1
2./configure --prefix=/opt/riscv
make linux
Alternatively:(构建32-bit RV32GC)
1
2./configure --prefix=/opt/riscv --with-arch=rv32gc --with-abi=ilp32d
make linux- 支持的架构有:rv32i、rv64i
- 标准扩展: (a)tomics, (m)ultiplication and division, (f)loat, (d)ouble, or (g)eneral for MAFD
- 支持的ABIs: ilp32 (32-bit soft-float), ilp32d (32-bit hard-float), ilp32f (32-bit with single-precision in registers and double in memory, niche use only), lp64 lp64f lp64d (same but with 64-bit long and pointers).
3、Linux multilib
同时支持32-bit和64-bit的Linux。
1
2./configure --prefix=/opt/riscv --enable-multilib
make linux编译出来的工具带有前缀:
riscv64-unknown-linux-gnu-, 但是能编译32位和64位程序。
4、编译结果
经过漫长的等待,我终于编译Linux 64bit版本。


References
本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!