skynet是为在线游戏服务器打造的轻量级框架,使用c+lua实现,支持linux 。使用这套框架能获得很大收益,其中一个就是,基本只需要用lua开发,很少用到c,提高了开发效率。但是,skynet本身对系统有很大依赖性,安装说明过于简单,没有提及到。所以文章这里总结linux安装skynet问题,希望有所帮助。
skynet的安装过程
简单3步,对于很多高版本的系统来说,可能就这3步。但是,低版本系统可能无法安装,如下:
1. gcc版本问题
2. 缺少 readline
3. 缺少 ncurses
4. 缺少 git (非必要项,则要手动下载skynet及3rd下的jemalloc)
5. 缺少 autoconf
所以,这里以CentOS5.5系统做说明,这系统不具备以上几个条件,甚至连git都无法通过包管理来安装。在skynet的编译过程中,如果在make步骤出现错误,要用 make cleanall 清除已编译的文件,不然会出现莫名其妙的错误。
在早期的skynet版本,lua不能清除干净,若是这样,执行:cd 3rd/lua && make clean && cd -
注意:想学习skynet的朋友可以关注+后台私信“skynet”视频学习地址:https://ke.qq.com/course/2806743?flowToken=1025549
问题1:缺少git 解决:这里要安装git,在安装git过程中,非常重要一步是安装curl,而这一步会把git所有的依赖装上,如curl和openssl,而git编译时也要找到curl库
问题2:git https错误 解决:很多网友都是说把https换成git解决,但也只是暂时性的。报错是git安装时系统缺少curl导致的,参考问题1重装git
重装git后,如果还不行,应该是git软连接问题,如下修正:ln -sf /usr/bin/git /bin/git
问题3:缺少readline 解决:yum -y install readline-devel
问题4:缺少ncurses 解决:很多网友说修改Makefile,在SYSLIBS变量中追加" -lncurses "选项,但这样不方便,以后还会遇到这个问题。所以这里建议手动安装readline
备注:
1、国内连接http://gnu.org网站不是很稳定,可能wget要多试几次。
2、通过ldconfig -p |grep readline可以测试readline的库是否成功加载
3、如果还无法解决,执行以下命令(建议先备份下):
rm -rf /usr/lib/libreadline*
ldconfig
如果是64位机器:
rm -rf /usr/lib64/libreadline*
ldconfig
问题5:lua整数编译报错 解决:这个是skynet最常见的编译失败了,和gcc版本有关,升级gcc可以解决问题。
最简单的方法:修改Makefile,在CFLAGS 加入 -std=gnu99
如果不想手动改,可用以下命令:
sed -i "s|CFLAGS =|CFLAGS = -std=gnu99 |" Makefile
如果是升级gcc参考问题6的解决方式。
问题6:gcc编译器问题 解决:这是gcc版本问题,解决方法就是到高版本(如gcc4.5)下载一个linux_atomic.c文件,将其编译为一个静态库链接到你的项目代码,具体做法也比较麻烦。所以,这里推荐重装gcc。
另外,编译skynet建议gcc最低版本4.6.0,可自动下载并更新依赖包。安装gcc过程会比较久,要耐心等待
安装gcc步骤如下:(确保磁盘可用空间至少4G)
注意了,要确保 download_prerequisites 安装成功。因为国内连接http://gnu.org网站不是很稳定,可能出现类似错误:
如果重试了很多次都无法成功,尝试手动安装吧,主要就3个依赖gmp和mpfr、mpc,装好后再继续执行gcc ../configure及后面的步骤。
问题7:缺少autoconf 解决:yum -y install autoconf
问题8:链接错误 解决:虚拟机共享目录不能设置软连接,选择其他目录安装