v2ray core 开发环境配置

1. go 安装

1.1. Mac

1
brew install go

1.1.1. Mac 上 配置 go 的环境变量

  1. GOROOT
  2. GOPATH
  3. GOBIN
  4. 添加 go 的目录到 PATH

修改 ~/.bash_profile

1
2
3
4
export GOROOT=/usr/local/Cellar/go/1.12.7/libexec
export GOBIN=$GOROOT/bin
export GOPATH=~/go
export PATH=$GOBIN:$PATH

1.2. 其它系统

参考 : https://golang.org/doc/install

2. 配置 shell 代理

因为特殊原因,代码可能拉不下来,所以需要添加一个代理

1
2
export http_proxy=http://localhost:1080
export https_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
2
3
4
5
6
cd $(go env GOPATH)/src/v2ray.com/core/main;
env CGO_ENABLED=0 ;
go build -o $HOME/v2ray -ldflags "-s -w" ;
cd $(go env GOPATH)/src/v2ray.com/core/infra/control/main ;
env CGO_ENABLED=0;
go build -o $HOME/v2ctl -tags confonly -ldflags "-s -w";

以上命令在当前用户的$HOME目录下生成刚新构建的v2ray 、v2ctl执行文件,即可正常使用。

4.2. 脚本构建

1
2
wget https://raw.githubusercontent.com/v2ray/v2ray-core/master/release/user-package.sh);
chmod 755 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
2
V2Ray 4.20.0 (user) 20190710-010000
A unified platform for anti-censorship.

用户还可修改脚本内的信息,定制属于自己的版本。

1
2
CODENAME="yuanmomo"
BUILDNAME="Multi-User"

yuanmomo-build-v2ray

4.3. 自动构建

bazel构建工具主要是发布团队使用。

如果只需要构建某个特定平台的安装包,如 Linux / AMD64:

1
2
3
4
cd $GOPATH/src/v2ray.com/core;
bazel build --action_env=GOPATH=$GOPATH --action_env=PATH=$PATH //release:v2ray_linux_amd64_package

#Output: bazel-bin/release/v2ray-linux-64.zip

构建所有安装包:

1
2
cd $GOPATH/src/v2ray.com/core;
bazel build --action_env=GOPATH=$GOPATH --action_env=PATH=$PATH //release:all

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

goland-go-root
goland-go-path

6.1.2. 运行 v2ray

6.1.2.1. 编译出 v2ctl 文件

因为运行 v2ray 时,需要调用 v2ctl 校验 config.json 文件的格式,所以需要先编译出 v2ctl 文件。

6.1.2.2. 运行 v2ray

配置如下的 config:
goland-v2ray-run

配置完成后,运行。

Just for my love !!