咸宁市本地信息网

教你如何在优麒麟上搭建 RISC-V 交叉编译环境

2026-04-03 09:52:02 浏览次数:1
详细信息

方法一:使用预编译工具链(推荐)

1. 下载预编译工具链

# 创建工具链目录
mkdir -p ~/riscv
cd ~/riscv

# 下载官方预编译工具链(选择适合的版本)
# 对于 Ubuntu/Debian 系统,推荐使用 SiFive 的工具链
wget https://github.com/sifive/freedom-tools/releases/download/v2020.08.2/freedom-tools-2020.08.2-linux-x86_64.tar.gz

# 或者使用 RISC-V 官方工具链
wget https://github.com/riscv-collab/riscv-gnu-toolchain/releases/download/2023.12.18/riscv64-elf-ubuntu-22.04-nightly-2023.12.18-nightly.tar.gz

# 解压
tar -xzf freedom-tools-2020.08.2-linux-x86_64.tar.gz
# 或者
tar -xzf riscv64-elf-ubuntu-22.04-nightly-2023.12.18-nightly.tar.gz

2. 设置环境变量

# 编辑 ~/.bashrc 文件
nano ~/.bashrc

# 在文件末尾添加(根据你的实际路径修改)
export PATH=$PATH:$HOME/riscv/freedom-tools/v2020.08.2/bin
# 或者
export PATH=$PATH:$HOME/riscv/riscv64-elf/bin

# 使配置生效
source ~/.bashrc

方法二:从源码编译工具链(功能最全)

1. 安装依赖

# 更新系统
sudo apt update

# 安装编译依赖
sudo apt install -y 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 \
ninja-build

2. 下载源码并编译

# 克隆 RISC-V GNU 工具链仓库(注意:需要较长时间和大量磁盘空间)
git clone --recursive https://github.com/riscv-collab/riscv-gnu-toolchain

# 进入目录
cd riscv-gnu-toolchain

# 配置编译选项(选择需要的变体)
# 64位架构,支持多种扩展
./configure --prefix=/opt/riscv --enable-multilib

# 或者编译特定配置
./configure --prefix=/opt/riscv --with-arch=rv64gc --with-abi=lp64d

# 开始编译(使用多个核心加速,这会花费较长时间)
make -j$(nproc)

方法三:使用包管理器安装

1. 添加 RISC-V 工具链 PPA(仅限 Ubuntu 22.04+)

# 添加 RISC-V 工具链 PPA
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt update

# 安装 RISC-V 工具链
sudo apt install gcc-riscv64-linux-gnu g++-riscv64-linux-gnu

# 安装裸机开发工具链
sudo apt install gcc-riscv64-unknown-elf g++-riscv64-unknown-elf

验证安装

# 检查工具链版本
riscv64-unknown-elf-gcc --version
# 或者
riscv64-linux-gnu-gcc --version

# 测试编译一个简单的程序
cat > hello.c << 'EOF'
#include <stdio.h>
int main() {
    printf("Hello RISC-V!\n");
    return 0;
}
EOF

# 编译(根据你的工具链名称调整)
riscv64-unknown-elf-gcc -o hello hello.c

# 查看文件信息
file hello

创建交叉编译的 CMake 工具链文件

# riscv64.cmake
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR riscv64)

# 指定交叉编译器
set(CMAKE_C_COMPILER riscv64-unknown-elf-gcc)
set(CMAKE_CXX_COMPILER riscv64-unknown-elf-g++)

# 指定目标架构
set(CMAKE_C_FLAGS "-march=rv64gc -mabi=lp64d")
set(CMAKE_CXX_FLAGS "-march=rv64gc -mabi=lp64d")

QEMU 模拟器安装(用于测试)

# 安装 QEMU RISC-V 模拟器
sudo apt install qemu-system-riscv64 qemu-user-static

# 运行测试程序(使用用户模式模拟)
qemu-riscv64 ./hello

常见问题解决

1. 缺少库文件

# 如果遇到找不到库的错误,安装必要的库
sudo apt install libc6-dev-riscv64-cross

2. 权限问题

# 如果安装在 /opt 目录,可能需要添加用户到组
sudo chmod -R 755 /opt/riscv

3. 编译错误

推荐配置

对于优麒麟用户,推荐使用:

初学者:使用方法一的预编译工具链 开发者:使用方法二从源码编译,获得完整功能 快速体验:使用方法三的包管理器安装

选择哪种方法取决于你的具体需求。预编译工具链最方便,源码编译最灵活但耗时最长。

相关推荐