github.com/ipfans/trojan-go@v0.11.0/docs/content/developer/build.md (about)

     1  ---
     2  title: "编译和自定义Trojan-Go"
     3  draft: false
     4  weight: 10
     5  ---
     6  
     7  编译需要Go版本号高于1.14.x,请在编译前确认你的编译器版本。推荐使用snap安装和更新go。
     8  
     9  编译方式非常简单,可以使用Makefile预设步骤进行编译:
    10  
    11  ```shell
    12  make
    13  make install #安装systemd服务等,可选
    14  ```
    15  
    16  或者直接使用Go进行编译:
    17  
    18  ```shell
    19  go build -tags "full" #编译完整版本
    20  ```
    21  
    22  可以通过指定GOOS和GOARCH环境变量,指定交叉编译的目标操作系统和架构,例如
    23  
    24  ```shell
    25  GOOS=windows GOARCH=386 go build -tags "full" #windows x86
    26  GOOS=linux GOARCH=arm64 go build -tags "full" #linux arm64
    27  ```
    28  
    29  你可以使用release.sh进行批量的多个平台的交叉编译,release版本使用了这个脚本进行构建。
    30  
    31  Trojan-Go的大多数模块是可插拔的。在build文件夹下可以找到各个模块的导入声明。如果你不需要其中某些功能,或者需要缩小可执行文件的体积,可以使用构建标签(tags)进行模块的自定义,例如
    32  
    33  ```shell
    34  go build -tags "full" #编译所有模块
    35  go build -tags "client" -trimpath -ldflags="-s -w -buildid=" #只有客户端功能,且去除符号表缩小体积
    36  go build -tags "server mysql" #只有服务端和mysql支持
    37  ```
    38  
    39  使用full标签等价于
    40  
    41  ```shell
    42  go build -tags "api client server forward nat other"
    43  ```