本文档介绍如何从源代码构建 FRP (Fast Reverse Proxy)。从源码构建允许您编译最新的功能、为特定平台定制构建或为 FRP 开发做出贡献。有关基于 Docker 的部署选项,请参阅 Docker 部署。
在从源码构建 FRP 之前,请确保已安装以下先决条件:
标准构建流程使用主 Makefile 为当前平台编译 FRP。
克隆仓库
构建客户端和服务器组件
这将在 ./bin/ 目录中编译 frpc(客户端)和 frps(服务器)二进制文件。
仅构建客户端或服务器组件
FRP 支持使用 Makefile.cross-compiles 文件为多种操作系统和架构进行交叉编译。
交叉编译过程支持以下平台:
| 操作系统 | 架构 |
|---|---|
| Linux | amd64, arm (v5/v7), arm64, mips, mipsle, mips64, mips64le, riscv64, loong64 |
| Windows | amd64, arm64 |
| Darwin (macOS) | amd64, arm64 |
| FreeBSD | amd64 |
| Android | arm64 |
一次性为所有支持的平台构建 FRP
此命令将为每个支持的平台编译 frpc 和 frps,并将二进制文件放置在 ./release/ 目录中。
来源:Makefile.cross-compiles11-37
FRP 构建系统由三个主要组件组成,它们协同工作来编译和打包软件。
来源:Makefile1-37 Makefile.cross-compiles1-38 package.sh1-75
package.sh 脚本可自动为所有支持的平台构建和打包 FRP。
运行打包脚本
此脚本将:
./release/packages/ 目录中。每个包包含:
构建 FRP 时,您可以使用各种选项来自定义构建。
构建标签决定了构建哪个组件。
-tags frps:构建服务器组件-tags frpc:构建客户端组件标准构建使用以下标志:
-trimpath:移除文件路径信息以提高可重现性。-ldflags "-s -w":去除调试信息以减小二进制文件的大小。来源:Makefile3 Makefile31-35 Makefile.cross-compiles3 Makefile.cross-compiles30-31
为了确保您的构建正常工作,您可以运行包含的测试。
如果遇到 Go 环境相关问题:
对于交叉编译问题:
来源:Makefile.cross-compiles16-27
如果您看到关于缺少 Go 模块的错误:
go mod download 来获取依赖项。要验证您的构建是否成功,您可以检查版本。
构建的二进制文件应显示当前 FRP 版本号。