Riscv-gnu-toolchain工具链的编译安装

为了编译EDK2,需要先编译安装riscv-gnu-toolchain

这个仓库很大,对网络稳定性要求较高

首先克隆仓库及其子模块,需要大概半个多小时


git clone --recursive https://github.com/riscv-collab/riscv-gnu-toolchain.git

安装编译依赖


sudo apt install autoconf automake autotools-dev curl python3 python3-pip libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev ninja-build git cmake libglib2.0-dev

配置configure文件,--prefix 来配置工具链安装路径


./configure --prefix=/opt/riscv

编译(虚拟机编译需要注意要分配8GB及以上的内存,不然容易编译失败)


sudo make -j$(nproc)

安装,一般是No action


sudo make install

测试工具链,查看版本


riscv64-unknown-elf-gcc -v

1 Like

你好,请问一下make linux和make编译出来的工具有什么区别吗

1 Like

看编译的东西不同,一个是gclib,一个是Newlib,常用gclib

那你有报过这个错误吗?

我没有遇到过,不过你可以尝试检查编译工具链是否正确安装,并且正确设置了环境变量export CROSS_COMPILE=<linux_toolchain>,注意编译edk2要使用gclib而不是newlib,所以你的编译工具链应该是make linux

<linux_toolchain>这是下载包的路径吗

是你的安装路径

调用错 GCC 了,用的是 native 的 gcc 。
你在编译 edk2 ?这东西如果没有本地需要运行的程序,那么按说你直接设置 CC=riscv64-xxxxx-gcc 就行了。

交叉编译我个人不推荐,编译器设置太麻烦,经常出这种编译器调用错误的问题。推荐还是尽可能的在 risc-v 硬件上去本地编译。