前言
最近中科院软件所PLCT实验室要开始基于 OpenJDK11 进行 RISC-V 32G 的移植工作,需要搭建好 RISC-V 32 位的 Linux 环境,本文就是介绍 RISC-V 32 位 Yocto版本的 Linux 环境的搭建过程。
1. 环境准备
1.1 宿主机
本次部署基于 Ubuntu 18.04.5 LTS 进行操作。
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04.5 LTS
Release: 18.04
Codename: bionic
1.2 交叉工具链
构建 32-bit RV32GC 的 riscv-gnu-toolchain,以下两种方法均可以完成构建,本文采用的是第二种。
-
基于官方的指导构建
https://github.com/riscv/riscv-gnu-toolchain
-
直接下载构建好的工具链
http://plct.zdlgv5.com/riscv32_extlib.tar.gzplct.zdlgv5.com
$ wget http://plct.zdlgv5.com/riscv32_extlib.tar.gz $ tar -xzvf riscv32_extlib.tar.gz
设置环境变量
$ export PATH=$PATH:./riscv32/bin
注:
-
上面的环境变量只在当前终端有效,也可以 ~/.bashrc 文件中永久生效。
-
测试构建是否成功可以执行:
$ riscv32-unknown-linux-gnu-gcc -v
出现类似输出即表示安装成功。
$ riscv32-unknown-linux-gnu-gcc -v
Using built-in specs.
COLLECT_GCC=riscv32-unknown-linux-gnu-gcc
COLLECT_LTO_WRAPPER=/home/jiayou/riscv32/bin/../libexec/gcc/riscv32-unknown-linux-gnu/9.2.0/lto-wrapper
Target: riscv32-unknown-linux-gnu
Configured with: /home/zhangdingli/toolchain/riscv-gnu-toolchain/riscv-gcc/configure --target=riscv32-unknown-linux-gnu --prefix=/home/zhangdingli/toolchain/riscv32 --with-sysroot=/home/zhangdingli/toolchain/riscv32/sysroot --with-system-zlib --enable-shared --enable-tls --enable-languages=c,c++,fortran --disable-libmudflap --disable-libssp --disable-libquadmath --disable-libsanitizer --disable-nls --disable-bootstrap --src=.././riscv-gcc --disable-multilib --with-abi=ilp32d --with-arch=rv32gc --with-tune=rocket 'CFLAGS_FOR_TARGET=-O2 -mcmodel=medlow' 'CXXFLAGS_FOR_TARGET=-O2 -mcmodel=medlow'
Thread model: posix
gcc version 9.2.0 (GCC)
2. 部署 Yocto
2.1 Create workspace
$ mkdir riscv-yocto && cd riscv-yocto
$ repo init -u git://github.com/riscv/meta-riscv -b master -m tools/manifests/riscv-yocto.xml
$ repo sync
$ repo start work --all