下载 skynet 源码:https://github.com/cloudwu/skynet
skynet 编译很简单,直接切换到 skynet 目录后,执行命令:
make linux
问题一:git 命令不存在
解决方法:
https://packages.debian.org/stretch/git
问题二:fatal: Not a git repository (or any of the parent directories): .git
解决方法:
在命令行直接执行命令:git init
问题三:/bin/sh: 1: ./autogen.sh: not found
其他博主都说是因为没有安装 autoconf 与 readline-devel 的缘故,但是这两个包之前就已经安装好了,所以我的问题并不是这个原因造成的。
1、查看目录:3rd/jemalloc,发现为空目录。
2、打开文件:skynet/Makefile,发现有这么一句:
3rd/jemalloc/Makefile : | 3rd/jemalloc/autogen.sh
cd 3rd/jemalloc && ./autogen.sh --with-jemalloc-prefix=je_ --enable-prof
- 第一句意思是说:3rd/jemalloc/Makefile 依赖于 3rd/jemalloc/autogen.sh;
- 而 jemalloc 最新版本的源码需要借助 git 来获取(即 3rd/jemalloc/autogen.sh 的内容)。
很显然,问题是由于 git 没有获取到 jemalloc 源码造成的(我的 debian 虚拟机无法连接外网)。
解决方法:
直接去 github 下载 jemalloc 最新源码,然后解压到目录:3rd/jemalloc。
问题四:awk: /lib/i386-linux-gnu/libtinfo.so.5: no version information available (required by /lib/i386-linux-gnu/libreadline.so.7)
提示信息指出 awk 用到了库:/lib/i386-linux-gnu/libtinfo.so.5,但实际需要的是库:/lib/i386-linux-gnu/libreadline.so.7。
执行命令:ldd awk,查看 awk 的动态链接库,可以看到有错误信息。
解决方法:
安装对应版本的 libtinfo 包。
问题五:warning: File ‘Makefile.in’ has modification time 2380 s in the future
原因是宿主机与虚拟机的系统时间不同步。
解决方法:
重启后,重新执行命令:make linux 编译 skynet 时,可能出现出错。
解决方法:
删掉 skynet 源文件,重新解压源码压缩文件,重新开始编译。