v2ray / v2ray-core

A platform for building proxies to bypass network restrictions.

Home Page:https://www.v2ray.com/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

all.go 修改无法精简编译了?

qiang-yu opened this issue · comments

网上搜索到的都是 vbuild 修改 all.go 去除不需要的模块,然后编译就可以精简

但是

vbuild 现在已经根本不存在了,现在改成了 bazel 编译,比之前的 vbuild 要安装多更多东西
安装好 bazel 之后,按照之前的修改 all.go 文件,去除不需要的模块,然后编译
修改 all.go ,去除不需要的模块,然后执行下面编译

cd $GOPATH/src/v2ray.com/core
bazel build --action_env=GOPATH=$GOPATH --action_env=PATH=$PATH //release:v2ray_linux_amd64_package

最后得到的 v2ray 文件有 14MB 那么大,完全没有任何精简

我试过,删除 all.go 文件,编译就会失败,说明编译确实会使用 all.go 文件

但是,无论我删除 all.go 里面的多少个模块,最后编译出来的文件大小都是一样的 14MB,
感觉修改 all.go 文件里面的内容,完全不起任何作用

有建议说 bazel clean, bazel build

但是我测试过,不管 bazel clean 几次, 最终 编译出来的 v2ray 大小都是一样的,all.go 的修改没有起任何作用

求指导,现在 v2ray 应该怎么样做 精简编译呢?

谢谢

你需要列出你删减的内容,和你具体的编译操作。

精简之后的 all.go 是这样的

package all

import (
// The following are necessary as they register handlers in their init functions.

// Required features. Can't remove unless there is replacements.
_ "v2ray.com/core/app/dispatcher"
_ "v2ray.com/core/app/proxyman/inbound"
_ "v2ray.com/core/app/proxyman/outbound"

// Other optional features.
_ "v2ray.com/core/app/log"
_ "v2ray.com/core/app/router"

// Inbound and outbound proxies.
_ "v2ray.com/core/proxy/dokodemo"
_ "v2ray.com/core/proxy/freedom"
_ "v2ray.com/core/proxy/vmess/outbound"

// Transports
_ "v2ray.com/core/transport/internet/websocket"


// JSON config support. Choose only one from the two below.
// The following line loads JSON internally
_ "v2ray.com/core/main/jsonem"

// Load config from file or http(s)
_ "v2ray.com/core/main/confloader/external"

)

编译方法

cd $GOPATH/src/v2ray.com/core

bazel clean

bazel build --action_env=GOPATH=$GOPATH --action_env=PATH=$PATH //release:v2ray_linux_amd64_package

编译出来的结果依然是 14MB 那么大,一点都没有变小

因为你引用了jsonem。用v2ray.com/core/main/json就不会有这个问题。

因为你引用了jsonem。用v2ray.com/core/main/json就不会有这个问题。

测试了一下,确实,不要引用 jsonem 就可以精简编译了,谢谢

commented

问题是没有jsonem能直接脱离v2ctl吗