From 594dfb2e7deb95527088db9fa8045c31181b3c03 Mon Sep 17 00:00:00 2001 From: Wang Defa Date: Mon, 15 Dec 2025 13:20:39 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BD=BF=E7=94=A8=20Ubuntu=2020.04=20?= =?UTF-8?q?=E5=92=8C=E5=AE=98=E6=96=B9=20depends=20=E7=B3=BB=E7=BB=9F?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E9=9D=99=E6=80=81=E9=93=BE=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关键问题修复: - Ubuntu 22.04 的 GCC 11.4 与 Boost 1.69 不兼容 - Ubuntu 20.04 的 GCC 9.x 与 Boost 1.69 完全兼容 核心改进: 1. 基础镜像从 ubuntu:22.04 改为 ubuntu:20.04 2. 使用官方 Dockerfile 的 depends 系统方法 3. 构建产物路径对齐官方:build/TARGET/release/bin/mond 4. 支持 amd64 和 arm64 架构 --- docker/Dockerfile.ubuntu | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/docker/Dockerfile.ubuntu b/docker/Dockerfile.ubuntu index eca3235..44cb415 100644 --- a/docker/Dockerfile.ubuntu +++ b/docker/Dockerfile.ubuntu @@ -1,4 +1,4 @@ -FROM ubuntu:22.04 AS base +FROM ubuntu:20.04 AS base ARG TARGETARCH ARG BUILDPLATFORM @@ -59,25 +59,25 @@ COPY ./init.sh ./init.sh RUN chmod +x ./init.sh && ./init.sh -# 构建 Monero (mond) - 使用官方 release-static 方法 +# 使用官方 depends 系统构建静态依赖(参考 .source/Dockerfile) RUN if [ "$BUILDPLATFORM" != "$TARGETPLATFORM" ]; then \ - MAKE_JOBS="-j2"; \ + MAKE_JOBS=2; \ else \ - MAKE_JOBS="-j$(nproc)"; \ + MAKE_JOBS=$(nproc); \ fi && \ - echo "Building mond with parallel jobs: $MAKE_JOBS" && \ - mkdir -p build/release && cd build/release && \ - cmake ../.. \ - -DCMAKE_BUILD_TYPE=Release \ - -DBUILD_GUI_DEPS=OFF \ - -DARCH=default \ - -DSTATIC=ON \ - -DSTACK_TRACE=OFF && \ - make $MAKE_JOBS daemon + if [ "$TARGETARCH" = "arm64" ]; then \ + DEPENDS_TARGET="aarch64-linux-gnu"; \ + else \ + DEPENDS_TARGET="x86_64-linux-gnu"; \ + fi && \ + echo "Building dependencies for $DEPENDS_TARGET with $MAKE_JOBS parallel jobs" && \ + make -j$MAKE_JOBS depends target=$DEPENDS_TARGET && \ + mkdir -p /output && \ + cp build/$DEPENDS_TARGET/release/bin/mond /output/mond # 最终阶段 - 只复制静态链接的二进制文件 FROM scratch ARG TARGETARCH -COPY --from=build /monero/build/release/bin/mond /linux_${TARGETARCH}/mond +COPY --from=build /output/mond /linux_${TARGETARCH}/mond