编译win7最新版frp

这里编译的版本是0.61.2

本来像改源码,改了十几个文件后发现要改的越来越多,考虑编译golang1.20源码支持win7。

上一篇编译了一个docker镜像。利用这个镜像打包

# 第一阶段:编译frp
FROM uhub.service.ucloud.cn/iatc/golang:1.22-alpine-win7 AS frp-builder

WORKDIR /app

# 安装必要的依赖,包括 curl
RUN apk add --no-cache --virtual .build-deps \
    bash gcc musl-dev git wget curl tar gcompat patch

# 下载并解压 frp v0.61.2 源码
RUN curl -L https://github.com/fatedier/frp/archive/refs/tags/v0.61.2.tar.gz | tar -xz

# 进入 frp 目录
WORKDIR /app/frp-0.61.2

# 使用 sed 命令替换 go.mod 文件中的 go 1.23.0 为 go 1.22
RUN sed -i 's/go 1.23.0/go 1.22/' go.mod

# 清理并重新下载依赖
RUN go mod tidy

# 构建 frps (Linux 版本)
RUN go build -trimpath -ldflags="-s -w" -tags frps -o bin/frps ./cmd/frps

# 设置环境变量以交叉编译 Windows AMD64 版本
ENV GOOS=windows
ENV GOARCH=amd64

# 构建 frps (Windows AMD64 版本)
RUN go build -trimpath -ldflags="-s -w" -tags frps -o bin/frps.exe ./cmd/frps
RUN go build -trimpath -ldflags="-s -w" -tags frpc -o bin/frpc.exe ./cmd/frpc

# 第二阶段:创建最小化运行时镜像
FROM alpine:latest

# 安装时区
RUN apk add --no-cache tzdata

WORKDIR /app

# 从构建阶段复制 Linux 版本的可执行文件
COPY --from=frp-builder /app/frp-0.61.2/bin/frps .

# 从构建阶段复制 Windows AMD64 版本的可执行文件
COPY --from=frp-builder /app/frp-0.61.2/bin/frps.exe .
COPY --from=frp-builder /app/frp-0.61.2/bin/frpc.exe .

# 从构建阶段复制配置文件
COPY --from=frp-builder /app/frp-0.61.2/conf/frps.toml .
COPY --from=frp-builder /app/frp-0.61.2/conf/frps_full_example.toml .

# 暴露端口
EXPOSE 7000

# 设置入口点
ENTRYPOINT ["./frps", "-c", "./frps.toml"]

编译之后 通过下main的命令将交叉编译的exe拷贝出来。

docker build -t frps-win7:latest .
docker run --name frp-container -itd  frps-win7:latest
docker cp frp-container:/app .

你可能感兴趣的:(frp,win7)