一个多月前发了一篇帖子: WireGuard 跨国组网失败后,一个新工具的诞生,这段时间社区用户提供了很多有价值的反馈.因此发一个帖子汇报一下由社区用户驱动而实现的特性,并感谢各位社区用户.
曾经我认为用户使用的是相对较新的 Linux 发行版,并能够使用系统依赖构建出二进制,并使用发行版提供的方式打包,至少是能运行 Docker. 然而,还有用户在用着 centos7,甚至是一些我没有听说过的路由器系统.对于这些系统几乎没法用这个软件,而把这个软件跑在路由器上貌似也是一种常见的需求?
一位用户通过很复杂的脚本构建所有底层依赖,并最终制作出静态链接的可执行程序后,我觉得有必要支持这个特性.因此参考这个用户的脚本,调整 CMake 构建流程,允许下载依赖并 构建出单文件的可执行程序 ,这对 Go 和 Rust 来说不难,但对 C++ 来说还是稍微有一点点复杂.
在前面的基础上,又 通过交叉编译构建不同架构的可执行程序 ,最终制作出Github Workflow.
这是个自用软件,同时分享出来给 有相同需求的用户.后续目标是让软件保持足够的稳定,几乎不会为用户实现新需求,除非能直接提 PR.说到稳定,前段时间心血来潮测试过第一个发布的版本,还能和最新版本正常组网.
最后再放一下项目链接: https://github.com/lanthora/candy
1
rebecca554owen 164 天前
项目不错,支持了。
|
2
fortitudeZDY 163 天前
c++编写,太厉害了,赞一个
|
3
lanthora OP @rebecca554owen 感谢
@fortitudeZDY 当初选 c++ 是因为 wintun 库是 c 的 api,并且用 c++ 写不用担心编译不出一些用户量少的架构,毕竟不管什么架构至少会出能用的 c 编译器. |
4
fortitudeZDY 163 天前
@lanthora 我看 tailscale 也是用的 wintun 是,c++一直没胆量去学习,不过 go 在网络处理上可能还是没有 c++高效,加油楼主
|
5
lanthora OP @fortitudeZDY 在 windows 下几乎都是用的 wintun, 其他语言是给 c 套壳.一般家庭网络性能瓶颈是带宽的上传,不是开发语言.这波升级搞定后我要继续躺了.不做新功能,希望没 BUG.
|
6
allenby 162 天前 via Android
支持嘎
|
7
cnbatch 162 天前
我自己的网络工具也用 C++来写,依赖项全部由系统内置的包管理器提供,个别发行版不提供静态版本那就自己编译一个写特例。
最终效果就是,只需要复制粘贴命令就能顺利编译(个别发行版除外)。 不过我没法用 GitHub Workflow ,这货不支持 BSD 二进制,而我自己是 BSD 用户。 所以我都是在自己的虚拟机做编译的,在开发用的机器运行脚本,自动登录到各台虚拟机运行编译流程。 唯一的遗憾是,我的项目创始之时,各大编译器对 C++20 特性的支持差异太大,只能使用当时的“最大公约数”——C++17 ,没能用上新版本内置的协程。现在想改都没法改。 |
8
cnbatch 162 天前
@fortitudeZDY 没什么好怕的,崩了就改,一边写一边学
|
9
tediorelee 160 天前
厉害了,star 一下
|