MacOS M1 编译 Qv2ray + Trojan-go + QT6

wicast C
4 min readMar 5, 2021

--

本文撰写时间为2021/03/05

编译准备

M1 mac 一台

本文以 homebrew 作为系统包管理,请先确保 brew 命令可以正确使用,并且苹果的 clang 工具也能使用(brew 运行时会提示)。下载过慢请换镜像,比如清华源。

编译需要用到 QT6、golang、等工具,执行以下命令安装:

brew install qt@6 go grpc cmake v2ray openssl

编译 Trojan-go

先下载 Trojan-go 的项目并编译

git clone https://github.com/p4gefau1t/trojan-go
cd trojan-go
make

编译好的内容就在 build 文件夹里
如果 golang 编译下载过慢的话挂代理

go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct

编译 Qv2ray

一样先下载

git clone https://github.com/Qv2ray/Qv2ray
cd Qv2ray

目前 QT6 支持还在 dev 分支,所有 qv2ray 相关的内容都需要切换到 dev

git checkout dev# 编译前还需要给出 openssl 的位置,不然会报错找不到,如果你的openssl位置不一样, `brew info openssl` 看一下
export PKG_CONFIG_PATH="/opt/homebrew/opt/openssl@1.1/lib/pkgconfig"
mkdir build
cd build
# 由于 macdeployqt 的 bug,执行该命令会引起各种奇怪问题,这里就直接加参数跳过它
cmake -DQV2RAY_QT6=ON -DQV2RAY_AUTO_DEPLOY=OFF -DCMAKE_BUILD_TYPE=Release ..
make all -j8

编译完成后还没完,由于原本 auto deploy 会把内置插件放到包内正确位置,我们跳过了这一步,所以还得手工操作下

mkdir qv2ray.app/Contents/Resources/plugins/
# 我也不知道为啥编译出来的插件库不是 dylib 结尾
cp libQvPlugin-BuiltinProtocolSupport.so qv2ray.app/Contents/Resources/plugins/libQvPlugin-BuiltinProtocolSupport.dylib
cp libQvPlugin-BuiltinSubscriptionSupport.so qv2ray.app/Contents/Resources/plugins/libQvPlugin-BuiltinSubscriptionSupport.dylib

完成后执行 qv2ray.app/Contents/MacOS/qv2ray 或者 open qv2ray.app 再或者直接双击启动应用,启动成功的话配置完 v2ray 核心就已经可以用 v2ray 自带的协议了。

我的核心配置是: /opt/homebrew/bin/v2ray/opt/homebrew/Cellar/v2ray/4.34.0_1/share/v2ray,各位自行修改

编译 QvPlugin-Trojan-Go

老规矩

git clone https://github.com/Qv2ray/QvPlugin-Trojan-Go
cd QvPlugin-Trojan-Go
git checkout dev
mkdir build
cd build
# 要让插件用 QT6
cmake -DQVPLUGIN_USE_QT6=ON -DCMAKE_BUILD_TYPE=Release ..
make -j8

这时候build目录里会有个 libQvPlugin-TrojanGo.so,把它拷贝到 qv2ray 的插件目录下,同时把后缀名改成 dylib。重启 qv2ray,插件列表里就能看到这个 Trojan-Go Plugin,在设定里把之前第一个编译的 trojan-go 的完成填上就大功告成了!此外,纯 C++ 写的QvPlugin-Trojan 也可以用这个办法编译,还不需要golang

后面的配置请继续参考qv2ray官方文档

--

--

No responses yet