MonaServer源碼的編譯安裝

週末的時候想喫餃子,媳婦說可以給我包包子,包子餡大,弄起來快。於是去超市買菜買肉,回來和麪,洗菜,剁餡,幾個小時過後,兩個人已經飢餓不堪,纔開始準備包,我在廚房燒水準備蒸的時候,聽媳婦在屋裏哭,進去一問,原來是被自己的包子醜哭了,醜哭了!於是包子變成大餃子……

從下午18點開始準備,一直到晚上23點收拾完畢,還好是週六,雖然累,但幸福。這就好像我想要搭建MonaServer的服務器,但使用的虛擬機告訴我係統默認支持gcc3.4.6版本,不支持更高版本一樣,需要我自己準備安裝gcc,準備luajit,然後構建MonaServer,倖幸苦苦累了一天到下班才搞定GCC的安裝,於是加班加點弄好了Luajit,而我想要的MonaServer還沒開始,真真整整正正是“行百步者半九十”的道理,所以我們要不忘初心,堅持下去,最終就會喫到美美的大餃子。


………………………………分界線………………………………


上一遍介紹了關於GCC4.8.2的安裝,這一篇我們開始搭建MonaServer服務器,先從其依賴的Luajit(2.0.4)開始說起。

準備好MonaServer-master.zip luajit-2.0.zip(推薦選擇.gz包)

1、解壓luajit,編譯構建

$unzip ~/luajit-2.0.zip

$cd luajit-2.0

$vim Makefile(修改安裝目錄,export PREFIX= ~/luajit20),保存退出(:wq)

$make (too young too simple)

$make CC=~/gcc482/bin/gcc (too young too simple,too)

$export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/gcclib/gmp432/lib:~/gcclib/mpfr242/lib:~/gcclib/mpc081/lib

$make CC=~/gcc482/bin/gcc(so good,CC參數,配置自己的gcc路徑,別問我怎麼知道的,都是淚)

$咔,報錯了。什麼什麼 not a function於是又開啓漫長的解決問題之路……你們是幸福的,因爲答案在下面

$我是在Win7環境下載的luajit-2.0.4.zip文件(而沒有選擇.gz,好傻是吧),然後通過rz -bye上傳到CentOS虛擬機目錄,解壓安裝,這個由Windows到Linux的過程,導致換行編碼錯誤,詳細請戳這裏,我們這樣解決:

$find . -type f -print0 | xargs -0 dos2unix(這鬼問題,誰能想得到,太奇葩,真是歷盡千辛萬苦)

$make CC=~/gcc482/bin/gcc(再一次make)

$Complete!

$MonaServer的官方介紹文檔說要註釋掉DLUAJIT_ENABLE_LUA52COMPAT這一行,在src/Makefile文件內,默認下載的已經被註釋過,忽略。

2、搭建MonaServer服務

$unzip ~/MonaServer-master.zip 

$cd MonaServer-master/

$vim Makefile (仔細閱讀發現,是在當前文件下構建,可忽略這一步),退出

$make prefix=~/MonaServer CC=~/gcc482/bin/g++(too young too naive,報錯啦,竟然告訴老子找不到gcc,媽蛋)

$export PATH=~/gcc482/bin/:$PATH(經過這麼久的戰鬥,這都是小事)

$make clean

$make prefix=~/MonaServer CC=~/gcc482/bin/g++(再一次make)(too young too naive,想法簡單,安裝太混蛋)

$找不到lua.h,找不到頭文件的錯誤簡直很白癡,不是已經安裝了嘛,怎麼會找不到呢!!

$vim MonaServer/sources/Script.h(修改引用的地址爲~/luajit20/include/luajit-2.0/lua.h and lauxlib.h,根據自己的實際安裝位置修改)

$vim MonaServer/sources/Script.cpp(同上)

$make clean

$make prefix=~/MonaServer CC=~/gcc482/bin/g++(開開心心再一次make)

$你們都懂的,肯定會報錯的。cannot find -lluajit-5.1編譯過程沒錯,創建可執行文件的時出錯。(艱苦的學習.so/lib*.so/ld/ldd)

$知道了ld -l 作用以及-L作用之後,問題迎刃而解,並在~/luajit20/lib下面找到的libluajit-5.1.so文件

$vim ~/MonaServer-master/MonaServer/Makefile 

$在第10行的位置加上粗體部分LIBDIRS+=-L./../MonaBase/lib/ -L./../MonaCore/lib/-L./../../luajit20/lib(具體目錄路徑,自定義,別搞錯層次)

$make clean

$make prefix=~/MonaServer CC=~/gcc482/bin/g++(心事重重又來一次make)

$Complete!

$找到編譯構建後的MonaServer文件夾,執行./MonaServer(開心並不是能持續很久的……)

$被告知/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.19' not found 這樣的錯誤

$度娘,谷歌上關於解決該錯誤的文章很多,但都是一樣的結論,下載libstdc++6_4.7.2-5_amd64.deb包,解壓,拷貝,重新執行。

$經過老衲縝密的分析研究,發現這玩扔咱們有,GCC4.8.2安裝編譯構建完成的時就生出來啦

$strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX 檢查一下系統自帶的GLIBC

$strings ~/gcc482/lib64/libstdc++.so.6 | grep GLIBCXX 檢查老衲自己安裝的,你會發現,丫的老子有這東西,是系統太傻,不會找嘛

$export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/gcc482/lib64/

$./MonaServer

$Success!


在MonaServer同級目錄下增加MonaServer.ini配置文件,可更改服務提供的默認端口,具體MonaServer使用配置

後期我會在另外的虛擬機上進行再一次的構建操作,如果這期間會遇到問題,會詳細記錄下來,和大家分享。同時歡迎留言探討。


轉載請註明地址:http://blog.csdn.net/sotower/article/details/46685507

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章