Skynet源码准备
参考资料
在阅读源码中,会涉及一些C/C++,Lua的知识,一些网站能比较方便查阅资料
1,C++ 参考手册 - C++中文 - API参考文档 (apiref.com)
2,C语言 - 参考手册 - C语言 - API参考文档 (apiref.com)
3,Lua 5.4 Reference Manual - contents
工具准备
VirtualBox
官网:[Oracle VM VirtualBox](https://www.vmware.com/cn.html)
理由:VirtualBox的功能已经足够使用,而且免费,并且比VMware小
CentOS
阿里:[阿里巴巴开源镜像站](https://developer.aliyun.com/mirror/)
https://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-Minimal-2207-02.iso
https://mirrors.cloud.tencent.com/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-Minimal-2207-02.iso
http://mirrors.163.com/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-Minimal-2207-02.iso
清华:清华大学开源软件镜像站 | Tsinghua Open Source Mirror
https://mirror.tuna.tsinghua.edu.cn/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-Minimal-2207-02.iso
理由:CentOS是比较常用的Linux服务器系统,已经用习惯了
Terminal
安装:Microsoft Store
配置:CentOS
理由:功能强大,好用,免费,在Windows Store上直接安装使用
Samba
官网:Samba - opening windows to a wider world
作用:用于Linux和Windows之间的文件共享
安装:yum install samba
理由:能在Windows下完美访问Linux下的文件
Sublime
官网:Sublime Text - Text Editing, Done Right
配置:Sublime text找不到.so文件 - 简书 (jianshu.com)
理由:启动足够轻巧快速,看源码绰绰有余,个人觉得比VS code用起来更顺手
项目结构
这一部分开始正式接触Skynet源码,优秀的项目都有很棒的目录和组织,下面将分部分介绍整个项目的结构和组织
下载
Skynet是一个开源的项目,采用MIT许可协议,因此你可以直接在GitHub中下载
项目地址:https://github.com/cloudwu/skynet.git
Git命令:git clone https://github.com/cloudwu/skynet.git
目录
基于源码的情况下
重要的文件
3rd ====> 存放第三方的代码,有Lua和jemalloc等
examples ====> 框架的示例
lualib-src ====> 使用C写的并封装给Lua使用的库 在编译后产生:luaclib.so文件
lualib ====> 使用Lua写的库
service-src ====> 使用C写的并封装给Lua使用的服务 在编译后产生:cservice.so文件
service ====> 使用Lua写的服务
skynet-src ====> 使用C写的Skynet核心代码 在编译后产生:skynet可执行文件
test ====> 使用Lua写的测试代码
不重要的文件
README.md ====> 介绍怎么编译和测试
LICENSE ====> 许可证信息,采用MIT许可协议
Makefile ====> 编译规则文件,用于编译Skynet
platform.mk ====> 编译与平台相关的设置
核心代码为:skynet-src目录和service-src目录中的代码
剩下的基本都是为了给Lua脚本使用的
基于编译的情况下
说明:上面的目录文件,只是在未进行编译的情况,你进行编译后,会发生以下一些变化。(上面已经用黑体标注了)
1,lualib-src ====> 使用C写的并封装给Lua使用的库 在编译后产生:luaclib.so文件
2,service-src ====> 使用C写的并封装给Lua使用的服务 在编译后产生:cservice.so文件
3,skynet-src ====> 使用C写的Skynet核心代码 在编译后产生:skynet可执行文件
注意
在一开始的时候,下载的Skynet框架里面3rd文件夹中是没有文件的
在Windows下编译,要自己下载jemalloc文件,放进3rd进行编译
在Linux下编译,则会在编译的时候,自动下载文件到放到3rd
建议
一定要熟悉这些目录的结构,在看到目录名称的时候,你应该就要知道这个文件夹下面的文件放的是什么
对Skynet大概的结构会清楚不少,对其功能划分也能更容易理解,以后再继续学习会方便很多
编译
官方文档:https://github.com/cloudwu/skynet/wiki/Build
编译前,需要作必要的工具准备:yum install -y readline-devel autoconf
编译时,执行命令:make linux
具体查看官方文档即可
运行
进入项目目录,应该能看到Skynet的可执行文件,直接执行:./skynet ./example/config
就可以成功运行项目示例
多说一句:
另一种方式启动想要的服务,可以在main.lua运行后,在console直接输入需要启动的服务名
但需要在config中已经配置该服务文件的路径