You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在x86主机构建面向RISC-V的ARM交叉GCC编译器

构建树莓派4可用的RISC-V 32位交叉编译器(x86主机三交叉编译)

问题根源

你之前的配置犯了两个核心错误:

  • 错误将--build设为ARM平台:--build指的是当前执行编译的x86主机平台,而工具链要运行在树莓派(ARM)上,应该用--host指定这个目标运行平台。
  • Target使用了通配符格式:riscv32-*-elf这种写法不被config.sub脚本识别,必须用标准的目标三元组riscv32-unknown-elf。

正确构建流程

1. 安装x86主机依赖

在你的x86 Ubuntu/Debian主机上先装ARM交叉编译工具链和构建依赖:

sudo apt install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf make bison flex texinfo libgmp-dev libmpfr-dev libmpc-dev zlib1g-dev

2. 准备源码包

把GCC和Binutils的源码下载到同一目录(比如~/cross-build),版本建议匹配(比如GCC 12.x搭配Binutils 2.39):

mkdir ~/cross-build && cd ~/cross-build
wget https://ftp.gnu.org/gnu/gcc/gcc-12.2.0/gcc-12.2.0.tar.xz
wget https://ftp.gnu.org/gnu/binutils/binutils-2.39.tar.xz
tar xf gcc-12.2.0.tar.xz
tar xf binutils-2.39.tar.xz

3. 编译Binutils

先编译Binutils,因为GCC依赖它:

mkdir build-binutils && cd build-binutils
../binutils-2.39/configure \
  --build=x86_64-linux-gnu \
  --host=arm-linux-gnueabihf \
  --target=riscv32-unknown-elf \
  --prefix=/opt/riscv-arm \
  --disable-nls \
  --with-sysroot
make -j$(nproc)
sudo make install
cd ..

4. 编译GCC

先设置环境变量让GCC找到刚编译的Binutils,再进行配置编译:

export PATH=/opt/riscv-arm/bin:$PATH
mkdir build-gcc && cd build-gcc
../gcc-12.2.0/configure \
  --build=x86_64-linux-gnu \
  --host=arm-linux-gnueabihf \
  --target=riscv32-unknown-elf \
  --prefix=/opt/riscv-arm \
  --disable-nls \
  --enable-languages=c,c++ \
  --without-headers \
  --with-newlib \
  --disable-shared \
  --disable-threads
make -j$(nproc) all-gcc
make -j$(nproc) all-target-libgcc
sudo make install-gcc
sudo make install-target-libgcc

5. 部署到树莓派

把/opt/riscv-arm打包复制到树莓派的/opt/riscv目录,然后在树莓派的~/.bashrc里添加:

export PATH=/opt/riscv/bin:$PATH

执行source ~/.bashrc后,就能用riscv32-unknown-elf-gcc等工具生成RISC-V汇编了。

关键参数说明

  • --build=x86_64-linux-gnu:明确当前编译主机是x86_64 Linux
  • --host=arm-linux-gnueabihf:指定工具链将在树莓派的ARMhf环境运行
  • --target=riscv32-unknown-elf:指定工具链生成RISC-V 32位裸机程序
  • --disable-nls:禁用国际化支持,减小工具链体积
  • --with-newlib --without-headers:针对裸机环境构建,无需系统头文件

内容的提问来源于stack exchange,提问作者Lovis XII

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 00:17:30