以Trojan-Go为例,用Go语言试编译 作者: Hogwarts 发布于: 2021-02-10 更新于: 2022-12-18 分类: 红杏出墙 前文中有讲Trojan-go如trojan-gfw一样,有些日子不更新了,Github中的应该是Go1.15.1版本编译的,有小道消息,马上Go1.16很快要发布了。当然了也不是不能用,但作为强迫症患者,总感觉不舒服。 # 一、编译前的准备工作 因为是Go语言编写的所以首先要安装Go环境了。官方有安装教程,抄写如下。 ## 1.1 下载 wget https://go.dev/dl/go1.19.4.linux-amd64.tar.gz #有新版本下载最新版 ## 1.2 解压至运行目录 tar -C /usr/local -xzf go1.19.4.linux-amd64.tar.gz #注意修改版本号 ## 1.3 添加系统环境变量 centos运行:vim ~/.bash_profile debian运行:vim ~/.bashrc #添加内容如下 export GOPATH=$HOME/work export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin #让其生效 centos运行: source ~/.bash_profile debian运行: source ~/.bashrc ## 1.4 查看安装情况 go version #有如下输出说明安装成功 go version go1.19.4 linux/amd64 ## 1.5 Go的版本升级 Go1.18版本已经发布了,升级步骤如下:(其它新版本亦可参考) rm -rf /usr/local/go #删除go的安装路径文件 必须删除(小版本升级,编译不报错;大版本升级,编译报错。) rm -rf /root/work #删除工作目录,必须删除。 wget https://go.dev/dl/go1.19.4.linux-amd64.tar.gz tar -C /usr/local -xzf go1.19.4.linux-amd64.tar.gz centos运行: source ~/.bash_profile #让其生效 debian运行: source ~/.bashrc #让其生效 go version #查看版本 #输出以下信息说明升级成功 go version go1.19.4 linux/amd64 # 二、编译Trojan-go ## 2.1 下载代码(三选一) ###2.1.1 原作者 P4gefau1t 的源码 git clone https://github.com/p4gefau1t/trojan-go.git ###2.1.2 可尝试 Potterli20 及时更新的源码 git clone https://github.com/Potterli20/trojan-go-fork.git mv trojan-go-fork trojan-go #编译出的文件为trojan-go-fork,注意改名。 ###2.2.3 可尝试 Gfw report 更新的源码 git clone https://github.com/gfw-report/trojan-go.git ## 2.2 编译 ###2.1.1 编译full版本 cd trojan-go GOOS=linux GOARCH=arm64 go build -tags "full" -ldflags "-s -w" #编译Linux-armv8的命令 GOOS=linux GOARCH=amd64 go build -tags "full" -ldflags "-s -w" #编译Linux-amd64的命令 GOOS=windows GOARCH=amd64 go build -tags "full" -ldflags "-s -w" #编译Windows-amd64的命令 - 注意,因未加“-o”参数,Linux下的armv8和amd64输出的都是trojan-go,所以注意不要一起执行这两条命令,执行完一条后先把编译好的文件拷贝出来,再编译。 ###2.2.2 编译server和client版本 以下是可能用到的编译命令。full和server/client版本体积上差不了多少,看个人喜好吧。Win版编译成功,但在Q2ray2.7中运行报错,加入api参数也报错,在命令行运行没有问题。 GOOS=linux GOARCH=amd64 go build -o trojan-go-s -tags "server" -trimpath -ldflags="-s -w -buildid=" GOOS=linux GOARCH=amd64 go build -o trojan-go-c -tags "client" -trimpath -ldflags="-s -w -buildid=" GOOS=windows GOARCH=amd64 go build -tags "client" -trimpath -ldflags="-s -w -buildid=" GOOS=linux GOARCH=arm64 go build -o trojan-go_armv8-s -tags "server" -trimpath -ldflags="-s -w -buildid=" GOOS=linux GOARCH=arm64 go build -o trojan-go_armv8-c -tags "client" -trimpath -ldflags="-s -w -buildid=" # 三、照葫芦画瓢编译Xray和V2ray 其实没有必要编译,Xray和V2ray一般都是用最新版的Go编译的。而且无论Trojan-go还是Xr和V2,其白话文中都有介绍。 ## 3.1 编译Xray git clone https://github.com/XTLS/Xray-core.git cd Xray-core CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o xray.exe -trimpath -ldflags "-s -w -buildid=" ./main CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o xray -trimpath -ldflags "-s -w -buildid=" ./main CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -o xray-armv8 -trimpath -ldflags "-s -w -buildid=" ./main ## 3.2 编译V2ray git clone https://github.com/v2fly/v2ray-core.git cd /root/v2ray-core/main env CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o /root/v2ray-core/v2ray -ldflags "-s -w" env CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o /root/v2ray-core/v2ray.exe -ldflags "-s -w" cd /root/v2ray-core/infra/control/main env CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o /root/v2ray-core/v2ctl -tags confonly -ldflags "-s -w" env CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o /root/v2ray-core/v2ctl.exe -tags confonly -ldflags "-s -w" 标签: trojan-go, xray, v2ray
评论已关闭