MonaServer源代码的编译安装
周末的时候想吃饺子。媳妇说能够给我包包子。包子馅大,弄起来快。
于是去超市买菜买肉。回来和面。洗菜。剁馅,几个小时过后,两个人已经饥饿不堪,才開始准备包,我在厨房烧水准备蒸的时候,听媳妇在屋里哭。进去一问。原来是被自己的包子丑哭了,丑哭了。于是包子变成大饺子……
从下午18点開始准备,一直到晚上23点收拾完成,还好是周六。尽管累,但幸福。这就好像我想要搭建MonaServer的server,但使用的虚拟机告诉我系统默认支持gcc3.4.6版本号,不支持更高版本号一样,须要我自己准备安装gcc,准备luajit,然后构建MonaServer。幸幸苦苦累了一天到下班才搞定GCC的安装,于是加班加点弄好了Luajit。而我想要的MonaServer还没開始。真真整整正正是“行百步者半九十”的道理。所以我们要不忘初心,坚持下去,终于就会吃到美美的大饺子。
………………………………分界线………………………………
上一遍介绍了关于GCC4.8.2的安装,这一篇我们開始搭建MonaServerserver,先从其依赖的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配置文件。可更改服务提供的默认port,详细MonaServer使用配置。
后期我会在另外的虚拟机上进行再一次的构建操作,假设这期间会遇到问题,会具体记录下来。和大家分享。
同一时候欢迎留言探讨。
转载请注明地址:http://blog.csdn.net/sotower/article/details/46685507