Files
p2pool/llmdoc/guides/local-build.md
Wang Defa 9ff0daa938
All checks were successful
Build and Release / build-and-test (arm64, alpine) (push) Successful in 30s
Build and Release / build-and-test (amd64, alpine) (push) Successful in 42s
Build and Release / build-and-test (arm64, ubuntu) (push) Successful in 41s
Build and Release / build-and-test (amd64, ubuntu) (push) Successful in 54s
Build and Release / release (push) Has been skipped
添加配置文件管理和完整文档系统
- 重构配置方式:使用 params.conf 替代命令行参数
- postinst 自动创建配置文件,升级时保护用户配置
- 初始化 llmdoc 文档系统(概述、架构、指南、参考)
- 创建 README.md 和配置指南
- 提供完整的配置模板示例

配置文件优势:升级安全、集中管理、易于维护
2025-12-19 09:20:33 +08:00

1.8 KiB
Raw Permalink Blame History

本地构建指南

准备工作

系统依赖

  • Docker
  • Docker Buildx
  • Git

安装 Docker Buildx

# 启用 QEMU支持多平台构建
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes

# 创建 buildx builder
docker buildx create --use --name p2pool_builder --driver docker-container
docker buildx inspect --bootstrap

构建二进制包

Alpine 构建(推荐)

# 构建单一架构
docker buildx build --pull \
  --platform linux/amd64 \
  --build-arg P2POOL_VERSION=v4.9.1 \
  --output type=local,dest=./output \
  -f docker/Dockerfile.alpine .

# 多架构构建
docker buildx build --pull \
  --platform linux/amd64,linux/arm64 \
  --build-arg P2POOL_VERSION=v4.9.1 \
  --output type=local,dest=./output \
  -f docker/Dockerfile.alpine .

Ubuntu 构建

docker buildx build --pull \
  --platform linux/amd64 \
  --build-arg P2POOL_VERSION=v4.9.1 \
  --output type=local,dest=./output \
  -f docker/Dockerfile.ubuntu .

构建 Debian 包

# 打包二进制文件
TARGZ="p2pool-amd64-ubuntu-v4.12.tar.gz"
tar -czf "${TARGZ}" -C ./output/linux_amd64 .

# 生成 Debian 包
./debian/build-deb.sh amd64 v4.12 "${TARGZ}"

常见问题排查

调整编译并行度

修改 Dockerfile 中的 MAKE_JOBS 变量:

# 使用全部 CPU 核心amd64
elif [ "$TARGETARCH" = "amd64" ]; then \
    MAKE_JOBS="-j$(nproc)";

# 或使用固定作业数
elif [ "$TARGETARCH" = "amd64" ]; then \
    MAKE_JOBS="-j4";

网络和依赖问题

  • 确保 Docker 可以访问互联网
  • 检查 Git 子模块是否正确初始化
  • 验证 CMake 和编译器版本兼容性

性能提示

  • 使用 SSD 提高构建速度
  • 保持 Docker 镜像和依赖更新
  • 对于大型项目,考虑使用构建缓存