1. go 安装
1.1. Mac
1 | brew install go |
1.1.1. Mac 上 配置 go 的环境变量
- GOROOT
- GOPATH
- GOBIN
- 添加 go 的目录到 PATH
修改 ~/.bash_profile
1 | export GOROOT=/usr/local/Cellar/go/1.12.7/libexec |
1.2. 其它系统
参考 : https://golang.org/doc/install
2. 配置 shell 代理
因为特殊原因,代码可能拉不下来,所以需要添加一个代理
1 | export http_proxy=http://localhost:1080 |
3. 拉取 v2ray core 代码
1 | go get -u v2ray.com/core/... |
注意 go get 地址最后的三个点 …。这样会分析所有子目录并下载依赖编译子目录内容。
执行完成后,代码在:
1 | ~/go/src/v2ray.com/core |
4. 编译 v2ray-core 源码
关于源码的编译,此处只放命令相关的操作,具体的说明可以参考官方文档:
https://www.v2ray.com/developer/intro/compile.html
4.1. 手工构建
1 | cd $(go env GOPATH)/src/v2ray.com/core/main; |
以上命令在当前用户的$HOME目录下生成刚新构建的v2ray 、v2ctl执行文件,即可正常使用。
4.2. 脚本构建
1 | wget https://raw.githubusercontent.com/v2ray/v2ray-core/master/release/user-package.sh); |
以上脚本直接执行即可在当前目录生成类似v2ray-custom-linux-amd64-20190710-000000.zip的文件,即为发布包。
这个脚本可用一些参数编译出自行定制的发布包:
- windows 构建windows版本的发布包
- darwin 构建darwin(MacOS)版本的发布包
- tgz 最后打包成tar.gz而不是zip格式
- 386 构建成32位程序
- arm 构建适合arm架构CPU的程序,arm arm64
- mips 同上,参照golang的交叉编译文档
- nodat 不要包含地址库geoip.dat geosite.dat, 可以减小发布包的大小
- noconf 不要包括范例json, systemd/systemv等配置文件
- nosource 不要执行go get …,当已经拉去过v2ray源码,需要本地修改了v2ray 源码情况下不需要go进行源码覆盖
以上参数没有次序要求,只需要按需传给脚本,比如构建一个适合 windows 32位,不带地址库,不带样例配置的发布包:
1 | ./user-package.sh windows 386 nodat noconf |
脚本编译的v2ray,其启动信息会变成用户编译的时间,以做区分:
1 | V2Ray 4.20.0 (user) 20190710-010000 |
用户还可修改脚本内的信息,定制属于自己的版本。
1 | CODENAME="yuanmomo" |
4.3. 自动构建
bazel构建工具主要是发布团队使用。
如果只需要构建某个特定平台的安装包,如 Linux / AMD64:
1 | cd $GOPATH/src/v2ray.com/core; |
构建所有安装包:
1 | cd $GOPATH/src/v2ray.com/core; |
5. 安装构建完成的安装包
1 | $GOPATH/src/v2ray.com/core/release/install-release.sh --local <path/to/zip/file> |
6. 下载 GoLand 安装
https://download-cf.jetbrains.com/go/goland-2019.2.dmg
6.1. 配置 GoLand
GoLand 打开项目 ~/go/src/v2ray.com/core
6.1.1. Preferences 配置 GOROOT,GOPATH
6.1.2. 运行 v2ray
6.1.2.1. 编译出 v2ctl 文件
因为运行 v2ray 时,需要调用 v2ctl 校验 config.json 文件的格式,所以需要先编译出 v2ctl 文件。
6.1.2.2. 运行 v2ray
配置如下的 config:
配置完成后,运行。