下載 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 源文件,重新解壓源碼壓縮文件,重新開始編譯。