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

构建运行OpenSBI+QEMU的RISC-V Dockerfile遇下载问题求助

问题解决:OpenSBI编译失败的Dockerfile修复

问题背景

按照《1000行代码实现操作系统》指南构建Docker镜像时,RISC-V工具链下载成功,但OpenSBI编译阶段报错。

错误信息(翻译自截图)

/bin/sh: 1: riscv64-unknown-elf-gccgcc: not found
make: *** [Makefile:125: build] Error 127

问题根源

Dockerfile中OpenSBI编译的CROSS_COMPILE参数设置错误:指定了完整的编译器命令riscv64-unknown-elf-gcc,但该参数需要的是编译器前缀(即去掉gcc后的部分)。导致make命令尝试调用不存在的riscv64-unknown-elf-gccgcc,最终报错。

修复后的Dockerfile

FROM ubuntu:22.04

ARG USER_ID=1000
ARG GROUP_ID=1000

ENV RISCV=/opt/riscv
ENV PATH=$RISCV/bin:$PATH
ENV MAKEFLAGS=-j4

RUN groupadd -g "${GROUP_ID}" mygroup \
    && useradd -u "${USER_ID}" -g "${GROUP_ID}" -m myuser

RUN apt-get update \
    && apt-get -y install autoconf automake autotools-dev curl python3 python3-pip python3-tomli 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 libslirp-dev

RUN git clone https://github.com/riscv-collab/riscv-gnu-toolchain.git /usr/src/riscv-gnu-toolchain 

RUN cd /usr/src/riscv-gnu-toolchain && \
    ./configure --prefix=${RISCV} --enable-multilib && \
    make -j$(nproc) && \
    make install && \
    rm -rf /usr/src/riscv-gnu-toolchain

RUN git clone https://github.com/riscv-software-src/opensbi.git /opt/opensbi

# 修复CROSS_COMPILE参数,改为编译器前缀
RUN cd /opt/opensbi && \
    make CROSS_COMPILE=riscv64-unknown-elf- PLATFORM=generic CFLAGS="-fno-pie" LDFLAGS="-no-pie" && \
    rm -rf /opt/opensbi/.git

RUN chown -R myuser:mygroup /opt/riscv /opt/opensbi

WORKDIR /usr/src

USER myuser

CMD ["bash"]

额外优化说明

  • 修正CROSS_COMPILE为riscv64-unknown-elf-,这是RISC-V交叉编译工具链的标准前缀,make会自动拼接gcc、ld等工具名
  • 新增对/opt/opensbi目录的权限修改,确保普通用户能访问该目录

内容的提问来源于stack exchange,提问作者Charlie Chiu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 21:07:06