环境
宿主机:红米 K20 pro (12+512G)
系统:ubuntu 26
软件:Docker+ubuntu:22.04+大雕/coolsnowwolf/lede.git
结论
- 可行,成功!
- 耗时:
1个小时50分钟(上午10:02开始,11:52 完成)
(make dirclean && make -j$(nproc) V=s开始算 )
步骤1.建立镜像
docker build -t lede-builder .
cat Dockerfile
# ============================================================
# LEDE (Lean's OpenWrt) 编译环境
# 宿主机: aarch64 | 目标固件: x86_64
# ============================================================
FROM ubuntu:22.04
LABEL maintainer="lede-builder"
LABEL description="LEDE x86_64 build environment for aarch64 host"
# 避免交互式提示
ENV DEBIAN_FRONTEND=noninteractive
ENV TZ=Asia/Shanghai
# 允许 root 用户编译(绕过 autoconf/configure 的 root 检查)
ENV FORCE_UNSAFE_CONFIGURE=1
# ── 基础系统更新 ─────────────────────────────────────────────
RUN apt-get update -y && apt-get full-upgrade -y
# ── 安装编译依赖 ─────────────────────────────────────────────
# 注意:去除了 libc6-dev-i386 / gcc-multilib / g++-multilib
# 这三个包是 x86_64 宿主机专用的 32-bit 支持库,aarch64 上不存在
RUN apt-get install -y --no-install-recommends \
ack \
antlr3 \
asciidoc \
autoconf \
automake \
autopoint \
binutils \
bison \
build-essential \
bzip2 \
ca-certificates \
ccache \
clang \
cmake \
cpio \
curl \
device-tree-compiler \
flex \
gawk \
genisoimage \
gettext \
git \
gperf \
haveged \
help2man \
intltool \
libelf-dev \
libfuse-dev \
libglib2.0-dev \
libgmp3-dev \
libltdl-dev \
libmpc-dev \
libmpfr-dev \
libncurses5-dev \
libncursesw5-dev \
libpython3-dev \
libreadline-dev \
libssl-dev \
libtool \
llvm \
lrzsz \
msmtp \
ninja-build \
p7zip \
p7zip-full \
patch \
pkgconf \
python3 \
python3-pyelftools \
python3-setuptools \
qemu-utils \
rsync \
scons \
squashfs-tools \
subversion \
swig \
texinfo \
uglifyjs \
unzip \
upx-ucl \
vim \
wget \
xmlto \
xxd \
zlib1g-dev \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
# ── 使用 root,无需创建额外用户 ──────────────────────────────
WORKDIR /root
# ── 克隆 LEDE 源码 ───────────────────────────────────────────
RUN git clone --depth=1 https://github.com/coolsnowwolf/lede.git /root/lede
WORKDIR /root/lede
# ── 更新 feeds ───────────────────────────────────────────────
RUN ./scripts/feeds update -a \
&& ./scripts/feeds install -a
# ── 写入 x86_64 默认配置 ─────────────────────────────────────
RUN echo "CONFIG_TARGET_x86=y" > .config \
&& echo "CONFIG_TARGET_x86_64=y" >> .config \
&& echo "CONFIG_TARGET_x86_64_DEVICE_generic=y" >> .config \
&& make defconfig
# ── 预下载 dl 依赖包(可选,网络慢时建议开启)─────────────────
# RUN make download -j8 V=s
# ── 编译入口 ─────────────────────────────────────────────────
CMD ["/bin/bash"]
启动容器
docker run -it \
-v $(pwd)/output:/root/lede/bin \
--name lede \
lede-builder
步骤2.进入容器后编译
## 进入容器
docker -exec -it lede /bin/bash
# 如果需要自定义配置(交互式菜单)
make menuconfig
# 下载依赖
make download -j8
# 编译(第一次推荐单线程)
make -j1 V=s
# 后续编译可多线程
make -j$(nproc) V=s
清空编译的内容重来
# 清理所有编译产物(保留源码和配置)
make clean
# 如果要连工具链也一起清掉(完全重来,耗时最长)
make dirclean