cs被杀麻了,最近打算看看一下sliver的源码进行一下二开,这篇是记录遇到的一些问题

编译sliver

Windows下

官方说用MingW,但是我自己用他带的make不行,

​​

‍

下载make

搜了一下,记录编译make的过程:直接 传送门 下载需要的版本,比如这里下4.4的。

​​

‍

编译make

下载解压之后进入目录,打开build_w32.bat这个文件:

​​

在34行将gunmake改为make

​​

如果电脑没有visual studio的环境的话就会缺少MSVC,直接运行这个脚本会报错:

.\build_w32.bat

Creating GNU Make for Windows 9X/NT/2K/XP/Vista/7/8/10

No MSVC compiler available.
Please run vcvarsall.bat and/or configure your Path.

没下载的话就直接跳转下载 传送门。安装时勾选c/c++程序完成后再次运行就可以了。

​​

然后会在当前目录下产生一个名为 WinRel 的目录, 这个目录下就有编译好的make。

​​

添加环境变量不赘述,之后新开一个powershell查看,能显示版本即成功了。

​​

‍

尝试编译

然后先试着编译一遍,结果就碰壁。

​​

‍

Linux下

这提示环境变量里面没有uname,奶奶滴这个makefile居然不适用Windows。换到Ubuntu里面直接就可以了。

​​

‍

下载超时问题

但是我免费的魔法太硕了一下卡直接断掉,换用fastgithub也是相当的折磨人。但是可以用镜像站去替换GitHub的连接,比如下面是我已经替换了的,对国内的下载很友好,有需要的自己替换掉./go-asset.sh中对应这里的部分。

echo "-----------------------------------------------------------------"
echo " Garble"
echo "-----------------------------------------------------------------" echo "curl -L --fail --output $OUTPUT_DIR/linux/$GO_ARCH_1/garble https://github.com/moloch--/garble/releases/download/v$GARBLE_VER/garble_linux"
curl -L --fail --output $OUTPUT_DIR/linux/$GO_ARCH_1/garble https://githubfast.com/moloch--/garble/releases/download/v$GARBLE_VER/garble_linux
echo "curl -L --fail --output $OUTPUT_DIR/linux/$GO_ARCH_2/garble https://github.com/moloch--/garble/releases/download/v$GARBLE_VER/garble_linux-$GO_ARCH_2"
curl -L --fail --output $OUTPUT_DIR/linux/$GO_ARCH_2/garble https://githubfast.com/moloch--/garble/releases/download/v$GARBLE_VER/garble_linux-$GO_ARCH_2
echo "curl -L --fail --output $OUTPUT_DIR/windows/$GO_ARCH_1/garble.exe https://github.com/moloch--/garble/releases/download/v$GARBLE_VER/garble_windows.exe"
curl -L --fail --output $OUTPUT_DIR/windows/$GO_ARCH_1/garble.exe https://githubfast.com/moloch--/garble/releases/download/v$GARBLE_VER/garble_windows.exe
echo "curl -L --fail --output $OUTPUT_DIR/darwin/$GO_ARCH_1/garble https://github.com/moloch--/garble/releases/download/v$GARBLE_VER/garble_macos-$GO_ARCH_1"
curl -L --fail --output $OUTPUT_DIR/darwin/$GO_ARCH_1/garble https://githubfast.com/moloch--/garble/releases/download/v$GARBLE_VER/garble_macos-$GO_ARCH_1
echo "curl -L --fail --output $OUTPUT_DIR/darwin/$GO_ARCH_2/garble https://github.com/moloch--/garble/releases/download/v$GARBLE_VER/garble_macos-$GO_ARCH_2"
curl -L --fail --output $OUTPUT_DIR/darwin/$GO_ARCH_2/garble https://githubfast.com/moloch--/garble/releases/download/v$GARBLE_VER/garble_macos-$GO_ARCH_2 echo "-----------------------------------------------------------------"
echo " Shikata ga nai (ノ ゜Д゜)ノ ︵ 仕方がない"
echo "-----------------------------------------------------------------" # Linux (amd64)
echo "curl -L --fail --output $OUTPUT_DIR/linux/$GO_ARCH_1/sgn.zip https://github.com/moloch--/sgn/releases/download/v$SGN_VER/sgn_linux-$GO_ARCH_1.zip"
curl -L --fail --output $OUTPUT_DIR/linux/$GO_ARCH_1/sgn.zip https://githubfast.com/moloch--/sgn/releases/download/v$SGN_VER/sgn_linux-$GO_ARCH_1.zip # Linux (arm64)
echo "curl -L --fail --output $OUTPUT_DIR/linux/$GO_ARCH_2/sgn.zip https://github.com/moloch--/sgn/releases/download/v$SGN_VER/sgn_linux-$GO_ARCH_2.zip"
curl -L --fail --output $OUTPUT_DIR/linux/$GO_ARCH_2/sgn.zip https://githubfast.com/moloch--/sgn/releases/download/v$SGN_VER/sgn_linux-$GO_ARCH_2.zip # Windows (amd64)
echo "curl -L --fail --output $OUTPUT_DIR/windows/$GO_ARCH_1/sgn.zip https://github.com/moloch--/sgn/releases/download/v$SGN_VER/sgn_windows-$GO_ARCH_1.zip"
curl -L --fail --output $OUTPUT_DIR/windows/$GO_ARCH_1/sgn.zip https://githubfast.com/moloch--/sgn/releases/download/v$SGN_VER/sgn_windows-$GO_ARCH_1.zip # MacOS (amd64)
echo "curl -L --fail --output $OUTPUT_DIR/darwin/$GO_ARCH_1/sgn.zip https://github.com/moloch--/sgn/releases/download/v$SGN_VER/sgn_macos-$GO_ARCH_1.zip"
curl -L --fail --output $OUTPUT_DIR/darwin/$GO_ARCH_1/sgn.zip https://githubfast.com/moloch--/sgn/releases/download/v$SGN_VER/sgn_macos-$GO_ARCH_1.zip # MacOS (arm64)
echo "curl -L --fail --output $OUTPUT_DIR/darwin/$GO_ARCH_2/sgn.zip https://github.com/moloch--/sgn/releases/download/v$SGN_VER/sgn_macos-$GO_ARCH_2.zip"
curl -L --fail --output $OUTPUT_DIR/darwin/$GO_ARCH_2/sgn.zip https://githubfast.com/moloch--/sgn/releases/download/v$SGN_VER/sgn_macos-$GO_ARCH_2.zip # end
echo -e "clean up: $WORK_DIR"
rm -rf $WORK_DIR
echo -e "\n[*] All done\n"

更换之后速度就显著提升了,之前一个压缩包甚至能耗一个小时。

​​

等待完成:

​​

‍

解决报错

但是一跑居然有报错,是数组越界。

​​

看看源代码,跟进到/server/rpc/rpc.go的90行,是获取主要,次要,修订版本。这里应该是semVer这个变量他值的获取有问题,跟进SemanticVersion(),这个函数无非就是将版本号字符串分割成整数切片,他的调用也都是用来显示的,唯一的传值就是全局的Version。

​​

不过反正这里的版本检查也是要去掉的,我这里直接将次要和修订版本号改成了硬编码的1,2来解决问题。编译过一次之后就快很多了,几十秒就编译好了且能够正常运行:

​​

后续就是自由发挥了,比如内置机器人推送等等功能,这个后续改完了再发文章出来。

‍

Sliver 二开准备的更多相关文章

  1. NC57,NC63-NC二开经验总结

    版主2010级市场营销专业本科生 2013年8月入达内培训Java相关技术 12月入职,做用友NC的二次开发工作 2015年4月离职,4中下旬入职一家互联网金融企业 下面是做NC二开期间积累的一些常用 ...

  2. Odoo:全球第一免费开源ERP库龄表的简单实现方法(无需二开)

    问题背景 希望查看库龄超过30天的货物,该如何实现?此种简单数据查询需要二开吗? 解决方案 方法一:Stock Quant列表视图增加过滤器 <filter string="库龄超30 ...

  3. odoo导入功能二开

    原来有的导入功能相信很多小伙伴对其功能不是很满意,不过没关系,我们可以二开啊,把它的功能改造成你想要的样子,接下来让我们看看怎么办吧 例如我想把员工导入功能中添加上用户同步注册功能 首先,我要找到原模 ...

  4. 分享一个非常屌的eazyui二开demo

    eazyui二开Demo非常吊,里面各种非常吊的样例,最喜欢的是 多文件进度条上传,一次可多选,还有流程,还有文本编辑器  非常简洁的 不像一些官网各种复杂的东西.主要为自己保留一份, 在线demo在 ...

  5. 关于用友 U8-UAP二开的一些事

    这是关于一个刚刚接触用友U8的二次开发的一些小心得. 首先就是用友二开的论坛,http://u8dev.yonyou.com/ 当然这个论坛做得不怎么样,提出了好几个问题,都没有回复的. 以下是关于二 ...

  6. S-HR二开基础

    检测是否某个类部署上去了:http://10.3.0.115:6888/easportal/tools/getclassurl.jsp?className=com.kingdee.eas.hr.ser ...

  7. Revit二开---Schemachema扩展数据

    一.什么是Schema        Schema是Revit扩展数据的技术关键词,revit到这里,需要对Revit二开基础有一定了解. 二.Schema架构        建立revit扩展数据第 ...

  8. 金蝶k/3 cloud 生产用料清单下推生成调拨单二开记录

    系统默认的生产用料清单下推生成调拨单功能,是根据调拨选单数量来的,有库存和没有库存的都混在一起,导致业务人员审核调拨单的时候需要删除没有库存的分录行,严重影响工作效率. 现通过二开程序,根据生产用料清 ...

  9. Redash 二开 - 后端环境搭建

    Redash 二开 - 后端环境搭建 一.操作系统选择 官方文档有一句话:Windows users: while it should be possible to run Redash on a W ...

  10. 【odoo】关于odoo二开模块规范的一点思考

    老韩头的开发日常 ☞ [好书学习]系列 背景 作为丙方,完成了甲方的二开需求.因此,在设计二开模块的时候,考虑的是当时所列的需求清单,并整合到一个二开模块中.完成交付后,客户评价蛮好的.因此,成功的为 ...

随机推荐

  1. Visual Studio必备插件

    1.Rainbow Braces 2.Codist 3.ResXManager 4.XAML Styler for Visual Studio 2022 5.Viasfora 6.ZenCoding ...

  2. 「codeforces - 1621G」Weighted Increasing Subsequences

    link. 一个 dp(拜谢 ly)和切入点都略有不同的做法,并不需要观察啥性质. 原问题针对子序列进行规划,自然地想到转而对前缀进行规划.接下来我们考虑一个前缀 \([1, i]\) 以及一个 \( ...

  3. Oracle:查询表的统计信息,手动收集统计信息

    在Oracle中,存在执行计划不准的情况,怀疑表的统计信息是否收集,需要以下操作:select table_name,num_rows,blocks,last_analyzed from user_t ...

  4. PostgreSQL学习笔记-4.基础知识:空值NULL、别名AS

    NULL 值代表遗漏的未知数据. 默认地,表的列可以存放 NULL 值. 本章讲解 IS NULL 和 IS NOT NULL 操作符. 语法 当创建表时,NULL 的基本语法如下: CREATE T ...

  5. 一行代码搞定 font-size 响应式

    前言 公司要做大屏,但是大屏还要有个嵌在系统的版本,屏幕(iframe)小了但字体大了怎么办.网上找了很多代码都很长,个人参考了资料后实现了一个一行代码 font-size 响应式. TL;DR ht ...

  6. Java 中 extends 与implements 的区别 ?

    一.介绍extends 与 implements 的概念 1.类与类之间的继承使用extends : 子类extends父类的属性和方法,并且进行扩展或者重写. // 父类 class Animal ...

  7. Nuxt.js 生成sitemap站点地图文件

    Nuxt.js 生成sitemap站点地图文件 背景介绍 ​ 使用nuxt框架生成静态文件支持SEO优化,打包之后需要生成一个 sitemap.xml 文件方便提交搜索引擎进行收录.官网有提供一个插件 ...

  8. 《HelloGitHub》第 91 期

    兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 HelloGitHub 分享 GitHub 上有趣.入门级的开源项目. https://github.com/521xueweiha ...

  9. 监控报警体系:Prometheus和Grafana

    总体 prometheus全链路监控报警,在当今云原生时代可观测领域,Prometheus + Grafana 成为可观测性事实标准. 采集数据:运维团队可以使用 Prometheus 监控云原生 K ...

  10. AB32VG1系列之手把手入门与RTC简单评测

    说是评测, 时间仓库仅仅是玩了一下例程而已. 后面有时间打算移植 CoreMark 看看与Cortex-M3的对比. AB32VG1系列之手把手入门与RTC简单评测