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:連結錯誤 解決:虛拟機共享目錄不能設定軟連接配接,選擇其他目錄安裝