V2Ray 插拔构建
V2Ray 采用了可插拔的组件架构的设计,在构建时,用户可以任意地选择所需要的特性。
0x00 获取 Go
在不同的操作系统中,获取 Go 的方式并不相同,例如 Arch Linux 可以使用 pacman -S go
安装,其他的就不赘述了。
0x01 获取源代码
获取 V2Ray 源代码地方法多种多样,你可以选择使用 Git 克隆仓库,也可以直接在 GitHub 中下载压缩包,过去你需要将源代码放入 GOPATH 中,不过由于现在使用了 Go Module,这一过程也就不必要了。不过需要注意的一点是,通常情况下,我们需要最新的 release 版本的源代码。
0x02 选择组件
编辑源代码中的 main/distro/all/all.go
,将不需要的组件删除或注释掉,其中 Mandatory features
不可移除。
0x03 构建
我们可以通过设置 GOOS
GOARCH
和 GOARM
环境变量来选择目标平台,有时候我们可能需要设置 CGO_ENABLED=0
来关闭 CGO。cd
到源代码的路径下,执行以下命令:
go build -v -o v2ray -trimpath -ldflags "-s -w -buildid=" ./main
go build -v -o v2ctl -trimpath -ldflags "-s -w -buildid=" -tags confonly ./infra/control/main
之后你就可以在这个目录下看到 v2ray
和 v2ctl
两个文件了。
0x04 后记
这篇文章原本是我 2019 年写的,结果本文在 #v2fly 中讨论的时候被网友拉出来”鞭尸”。看着自己三年前的文章,我感到十分丢脸,遂重写本文。
本文使用 CC BY-NC-SA 4.0 授权
本文链接:https://blog.akinokae.de/archives/v2ray-reduce-build/