Build

获取源代码

推荐使用 git 。

git clone https://github.com/cloudwu/skynet.git

或者下载最新的 release 包1,自行解开。但下载的源代码包中并不包含 jemalloc2 ,请自行下载放在 3rd/jemalloc 目录下。

编译工具

skynet 的开发环境是 Ubuntu Linux 。但同时也应该能在其它 Linux 平台编译运行。它同时支持 MacOSX 及 FreeBSD ,没有经过严格测试、不保证没有问题。

skynet 所有代码以及引用的第三方库都可以被支持 C99 的编译器编译。所以你需要先安装 gcc 4.4及以上版本。(Clang 应该也没有问题)。它还需要 GNU Make 以运行 Makefile 脚本。

关于 jemalloc2 和 malloc hook

skynet 对 malloc api 做了 hook ,用来统计 skynet 内部服务分别占用了多少内存。这个 hook 是用实现 malloc 等同名 api 以重载 libc 对应 api 实现的。同时,为了内存管理的高效,默认链接了 jemalloc 。

而在 MacOSX 下,这种 hook 手段是不成立的。需要额外编写 memory zone ,这将引入更多复杂的问题,所以直接在编译时就关闭了 jemaloc 。如果你在 linux 下也不想使用 jemalloc 以及 skynet 自带的服务内存统计模块,那么可以参考 platform.mk 中针对 macosx 的写法关闭它们。

注意:编译 jemmaloc 需要先安装 autoconf 工具。

如果你是通过 git clone 得到的 skynet 的源代码,那么你应该已经安装了 git 。Makefile 里编写的规则会自动下载 jemalloc 的代码;如果你是直接下载的 skynet 源码包,就有可能无法自动工作。那么你可能需要手工把 jemalloc 下载到 3rd 目录下,或在 skynet 源码服务下运行 git init 将其初始化为一个 git 仓库,让 git submodule 可以正常工作。

编译

cd skynet
make linux

通常可以成功。

如果你不是 Linux 系统,那么可以在 make 后尝试 macosx 和 freebsd 两个选项。由于 freeBSD 默认的 make 不是 gnu make ,请用 gmake 。

通常,skynet 会作为一个框架在你的项目中使用,推荐你把 skynet 作为一个 submodule 引入。你可以在你的 Makefile 文件中调用 GNU Make 编译它。你可以把平台设置在 PLAT 这个环境变量中。

默认状态下,skynet 执行文件会被编译输出到 skynet 目录下。你很可能希望自定义输出位置,通过修改 SKYNET_BUILD_PATH 变量可以改变它。

关于 lua

skynet 自带了一份 Lua 5.2.3 的源代码。并在官方版本的基础上做了一点小修改。

这是因为,skynet 框架有可能启动大量的 lua 虚拟机。而大量的 Lua 虚拟机中运行的是相同的代码。skynet 带的修改版 Lua 实现会尽量共享相同的 Lua 函数原型以节约内存、提供初始化 Lua 虚拟机的速度。其副作用是,通过 loadfile luaL_loadfile 等加载过的 lua 文件,不会再次从文件系统加载(但你可以通过 code cache 接口重置)。

如果你不喜欢这个设计,也可以链接自己的 Lua 库。方法是改写 Makefile 中的 LUA_LIB 以及 LUA_INC 变量。

注:skynet 需要 Lua 5.2 版,不支持 Lua 5.1 以及 LuaJIT 。

如果你在编译 lua 的过程中遇到问题,请仔细阅读:http://www.lua.org/manual/5.2/readme.html

Windows

skynet 没有支持 Windows 平台的计划。但社区中有 Mr.j 同学成功移植到 Windows 下3

如有这方面的需要,请自行联系 Community

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值