Skynet源码准备(2)

JavenLaw

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

腾讯:腾讯软件源 (tencent.com)

https://mirrors.cloud.tencent.com/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-Minimal-2207-02.iso

网易:欢迎访问网易开源镜像站 (163.com)

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中已经配置该服务文件的路径