FluffOS是在MUDOS基础上更新完成的。进行了许多新功能和bug修复。 针对LPC有很好的兼容性,如果你的MUD运行MUDOS V22+版本,可以很容易运行在fluffos上。
系统环境: CnetOS .x mini 最小化安装 安装 mysql-community-devel 需要先安装mysql的源 wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
sudo rpm -ivh mysql-community-release-el7-.noarch.rpm 安装编译环境 yum install git
yum install gcc-c++
yum install bison-devel
yum install libevent-devel
yum install zlib-devel
yum install pcre-devel
yum install autoconf
yum install dos2unix
yum install golang
yum install mysql-community-devel
yum install unzip
yum install pam-devel Git获取FluffOS最新源码 git clone https://github.com/fluffos/fluffos.git 这个是fluffos .o.x 设置好的 local_options ,兼容旧 Mudlib ( 后面有时间再补充每条设置的说明 ) 注意: #undef SENSIBLE_MODIFIERS 如果关注支持(static 模式),如果打开将不支持(static模式) 需要修改mudlib的部分代码,关健词(static、array),static 改为 nosave, array改为 mixed /*
* local_options.h: compile-time configuration of the driver
*/ #ifndef _LOCAL_OPTIONS_H_
#define _LOCAL_OPTIONS_H_ /****************************************************************************
* COMPAT *
****************************************************************************/
#undef NO_ADD_ACTION
#undef NO_SNOOP
#undef NO_ENVIRONMENT
#undef NO_WIZARDS
#undef NO_LIGHT
#define OLD_ED
#undef ED_INDENT_CASE
#define ED_INDENT_SPACES 4
#undef ED_USE_TABS
#define ED_TAB_WIDTH 8
#undef RECEIVE_ED
#define RESTRICTED_ED
#define SENSIBLE_MODIFIERS
#define ARRAY_RESERVED_WORD /****************************************************************************
* MISCELLANEOUS *
****************************************************************************/
#define CUSTOM_CRYPT
#undef COMPAT_32
#define DEFAULT_PRAGMAS PRAGMA_SAVE_TYPES + PRAGMA_ERROR_CONTEXT + PRAGMA_OPTIMIZE
#define SAVE_EXTENSION ".o"
#undef PRIVS
#undef NO_SHADOWS
#undef USE_ICONV
#undef IPV6
#undef DTRACE /****************************************************************************
* PACKAGES *
****************************************************************************/
#define PACKAGE_OPS
#define PACKAGE_CORE #define PACKAGE_CONTRIB
#define PACKAGE_DEVELOP
#define PACKAGE_MATH
#undef PACKAGE_MATRIX
#define PACKAGE_MUDLIB_STATS
#define PACKAGE_SOCKETS
#undef PACKAGE_PARSER
#define PACKAGE_EXTERNAL #ifdef PACKAGE_DB
#define USE_MYSQL 1
#undef USE_MSQL
#undef USE_POSTGRES
#undef USE_SQLITE3
#define DEFAULT_DB USE_MYSQL
#endif #define PACKAGE_ASYNC
#define PACKAGE_SHA1
#undef PACKAGE_CRYPTO
#define PACKAGE_TRIM
#define PACKAGE_PCRE
#undef PACKAGE_DWLIB
#define PACKAGE_UIDS
#ifdef PACKAGE_UIDS
#define AUTO_SETEUID
#undef AUTO_TRUST_BACKBONE
#endif
#define PACKAGE_COMPRESS
#define SAVE_GZ_EXTENSION ".o.gz"
#undef PACKAGE_THREAD #undef DEBUGMALLOC
#undef DEBUGMALLOC_EXTENSIONS
#undef CHECK_MEMORY #endif /* _LOCAL_OPTIONS_H_ */ 编译FluffOS过程 $ cd fluffos
$ ./build.FluffOS #如果你编译环境缺少依赖包会在这个过程提醒,通过 yum search xxx 查找,安装再继续build
$ make #上面build这一步通过,这一步基本没什么问题,很顺利
$ make install 部署你的 FluffOS+MudLib #假设你的fluffos编译目录在 /home/fluffos/ #假如你的mudlib运行目录在 /home/xxxmud/ /home/fluffos/src/ 编译成功后的驱动(driver、dtrace_compile)

|--src/
|--- driver /home/xxxmud/ #mud布署目录
||------ bin/
||-- driver #刚编译好的驱动移到这里
||-- config.ini #mud配置文件( 要参考/home/fluffos/src/Config.example 修改 )
|
|------ mudlib/ #把你的mudlib整个打包解压放到这里
|-- adm
|-- binaries
|--............. 有关mud配置文件 参考 /home/fluffos/src/Config.example 进行修改 下面放一个config.ini 样例: vi /home/xxxmud/bin/config.ini name : HY-JHFY
mud ip : 0.0.0.0 # all ip
external_port_1 : telnet
external_port_2 : binary
mudlib directory : /home/xxxmud/code
binary directory : /home/xxxmud/bin
log directory : /log
include directories : /include
master file : /adm/single/master
simulated efun file : /adm/single/simul_efun
swap file : /adm/single/swapfile
debug log file : debug.log
global include file : "/include/globals.h"
default fail message : What?
default error message :
time to clean up :
time to reset :
time to swap :
compiler stack size :
evaluator stack size :
inherit chain size :
maximum evaluation cost :
maximum local variables :
maximum call depth :
maximum array size :
maximum buffer size :
maximum mapping size :
maximum string length :
maximum bits in a bitfield :
maximum byte transfer :
maximum read file size :
hash table size :
object table size :
living hash table size :
gametick msec :
heartbeat interval msec :
sane explode string :
reversible explode string :
sane sorting :
warn tab :
wombles :
call other type check :
call other warn :
mudlib error handler :
no resets :
lazy resets :
randomized resets :
no ansi :
strip before process input :
this player in call_out :
trace :
trace code :
interactive catch tell :
receive snoop :
snoop shadowed :
reverse defer :
has console :
noninteractive stderr write :
trap crashes :
old type behavior :
old range behavior :
warn old range behavior :
supress argument warnings :
enable_commands call init :
sprintf add_justified ignore ANSI colors :
apply cache bits :
call_out() next level :
maximum users : 好了下面我们开始启动mud服务吧,继续往下看介绍将mud加为centos服务自动启动。 [root@mud]# /home/hymud/bin/driver /home/hymud/bin/config.conf& 在部署过程中会遇到的一些问题 、Linux (*.h *.c )乱码及回车符号问题 由于大多人编码在windows下编码,在Linux上需要转换一下(或者通过ftp上传时会可自动转码) 使用下面的命令进行转码操作 [root@mud mud]# cd /home/xxxmud
[root@mud mud]# find . -name "*.h" -exec dos2unix {} \;
[root@mud mud]# find . -name "*.c" -exec dos2unix {} \;
[root@mud mud]# find . -name "*.o" -exec dos2unix {} \; 、迁移后用户密码错误登陆不了 因为FluffOS 默认使用md5加密,不过 FluffOS 同样兼容 crypt 加密 修改 vi /home/xxxmud/mudlib/include/globals.h 不同的mudlib 可能位置不一样 加入 #define crypt oldcrypt 即可。 // globals.h
// this file will be automatically included by the driver #define SAVE_EXTENSION __SAVE_EXTENSION__
#define save_binary #pragma optimize
#pragma save_binary #define crypt oldcrypt 、服务器端出现很多警告信息 出现这个问题,一般是因为你编译时的 local_options 设置问题,去掉 PRAGMA_WARNINGS 重新编译。
修改: #define DEFAULT_PRAGMAS PRAGMA_WARNINGS + PRAGMA_SAVE_TYPES + PRAGMA_ERROR_CONTEXT + PRAGMA_OPTIMIZE
改为: #define DEFAULT_PRAGMAS PRAGMA_SAVE_TYPES + PRAGMA_ERROR_CONTEXT + PRAGMA_OPTIMIZE 、将你的mud 加入到 centos 的自动启动服务的教程及脚本 编译启动脚本 记得要修改脚本内的以下配置为你的实际配置 ########## Mud Start Config ############
DIR=/home/xxxmud/bin #你实际的mud fluffos驱动地址
MUDCONFIG=${DIR}/config.ini #你mud的配置文件名字
MUDNAME=HY6 #你mud的名字,用于存放进程pid号
MUDSTARTNAME=xxxmud #你mud这个启动脚本的名字
########################################
vi /etc/rc.d/init.d/xxxmud #!/bin/bash
#chkconfig:
#description:hymud
########## Mud Start Config ############
DIR=/home/xxxmud/bin
MUDCONFIG=${DIR}/config.ini
MUDNAME=HY6
MUDSTARTNAME=xxxmud
######################################## RETVAL=
NUM= ulimit -n
echo > /proc/sys/vm/max_map_count usage ()
{
echo $"Usage: $0 {start|stop|restart|status}" >&
RETVAL=
} start ()
{
while(( $NUM < ))
do
sn=`ps -ef | grep driver | grep -v grep |awk '{print $2}'` if [ ! $sn ]; then
sn=
fi function ck_pid() {
if [[ -f $ ]]; then
if [[ ${sn} = `cat $` ]]; then
echo "${MUDSTARTNAME} Service Runing PID: ${sn}"
else
${DIR}/driver ${MUDCONFIG} &
echo $! > ${DIR}/${MUDNAME}.pid
fi
else
${DIR}/driver ${MUDCONFIG} &
echo $! > ${DIR}/${MUDNAME}.pid
fi
} ck_pid ${DIR}/${MUDNAME}.pid
sleep
done
} stop ()
{
function kill_pid() {
if [[ -f $ ]]; then
kill - `cat $`
rm $
fi
}
kill_pid ${DIR}/${MUDNAME}.pid
[ "$?" != "" ] && RETVAL=
} status ()
{
sn=`ps -ef | grep driver | grep -v grep |awk '{print $2}'` if [ ! $sn ]; then
sn=
fi function ck_pid() {
if [[ -f $ ]]; then
if [[ ${sn} = `cat $` ]]; then
echo "${MUDSTARTNAME} Service Runing PID: ${sn}"
else
echo "${MUDSTARTNAME} Service Not Run"
fi
fi
} ck_pid ${DIR}/${MUDNAME}.pid
} restart ()
{
stop
start
} case "$1" in
stop) stop ;;
status) status ;;
start|restart) restart ;;
*) usage ;;
esac exit $RETVAL 然后加入系统服务来启动 #改变权限 chown root.root /etc/rc.d/init.d/xxxmud #所有用户都可以执行,单只有root可以修改
chmod +x /etc/rc.d/init.d/xxxmud #将mysqld 放入linux启动管理体系中
chkconfig --add xxxmud #打开自启动
chkconfig xxxmud on #相关使用命令 service xxxmud start #启动mud服务
service xxxmud restart #重启mud服务
service xxxmud stop #停止mud服务
service xxxmud status #查看mud运行状态

【转】ffluos编译的更多相关文章

  1. TODO:macOS编译PHP7.1

    TODO:macOS编译PHP7.1 本文主要介绍在macOS上编译PHP7.1,有兴趣的朋友可以去尝试一下. 1.下载PHP7.1源码,建议到PHP官网下载纯净到源码包php-7.1.0.tar.g ...

  2. Centos6.5下编译安装mysql 5.6

    一:卸载旧版本 使用下面的命令检查是否安装有MySQL Server rpm -qa | grep mysql 有的话通过下面的命令来卸载掉 rpm -e mysql //普通删除模式 rpm -e ...

  3. CENTOS 6.5 平台离线编译安装 PHP5.6.6

    一.下载php源码包 http://cn2.php.net/get/php-5.6.6.tar.gz/from/this/mirror 二.编译 编译之前可能会缺少一些必要的依赖包,加载一个本地yum ...

  4. CENTOS 6.5 平台离线编译安装 Mysql5.6.22

    一.下载源码包 http://cdn.mysql.com/archives/mysql-5.6/mysql-5.6.22.tar.gz 二.准备工作 卸载之前本机自带的MYSQL 安装 cmake,编 ...

  5. Android注解使用之注解编译android-apt如何切换到annotationProcessor

    前言: 自从EventBus 3.x发布之后其通过注解预编译的方式解决了之前通过反射机制所引起的性能效率问题,其中注解预编译所采用的的就是android-apt的方式,不过最近Apt工具的作者宣布了不 ...

  6. Hawk 6. 编译和扩展开发

    Hawk是开源项目,因此任何人都可以为其贡献代码.作者也非常欢迎使用者能够扩展出更有用的插件. 编译 编译需要Visual Stuido,版本建议使用2015, 2010及以上没有经过测试,但应该可以 ...

  7. android studio 使用 jni 编译 opencv 完整实例 之 图像边缘检测!从此在andrid中自由使用 图像匹配、识别、检测

    目录: 1,过程感慨: 2,运行环境: 3,准备工作: 4,编译 .so 5,遇到的关键问题及其解决方法 6,实现效果截图. (原创:转载声明出处:http://www.cnblogs.com/lin ...

  8. 在Windows上编译和调试CoreCLR

    生成CoreCLR - Windows篇 本文的唯一目的就是让你运行Hello World 运行环境 Window 7+ Visual studio 2015 确保C++ 工具已经被安装,默认是不安装 ...

  9. 【踩坑速记】二次依赖?android studio编译运行各种踩坑解决方案,杜绝弯路,总有你想要的~

    这篇博客,只是把自己在开发中经常遇到的打包编译问题以及解决方案给大家稍微分享一下,不求吸睛,但求有用. 1.大家都知道我们常常会遇到dex超出方法数的问题,所以很多人都会采用android.suppo ...

随机推荐

  1. xgboost&lightgbm调参指南

    本文重点阐述了xgboost和lightgbm的主要参数和调参技巧,其理论部分可见集成学习,以下内容主要来自xgboost和LightGBM的官方文档. xgboost Xgboost参数主要分为三大 ...

  2. 【线段树 dp】8.6集合

    线段树维护dp 题目大意 给定初始大小为 $N$ 的正整数集合.定义两个数$x$和$y$建立联系的的代价为 $|x-y|$.我们定义整数集合的代价为:将每个整数都与至少一个另外的整数建立联系之后,所有 ...

  3. BZOJ3073 [Pa2011]Journeys[最短路—线段树优化建边]

    新技能get✔. 线段树优化建边主要是针对一类连续区间和连续区间之间建边的题,建边非常的优秀.. 这题中,每次要求$[l1,r1]$每一点向$[l2,r2]$每一点建无向边,然后单元最短路. 暴力建边 ...

  4. c语言1-2019秋作业02

    格式: 这个作业属于那个课程 C语言程序设计I 这个作业要求在哪里 http://edu.cnblogs.com/campus/zswxy/SE2019-3/homework/8688 我在这个课程的 ...

  5. C# ado.net oledb方式连接(三)

    oledb 方式连接 class Program { private static string constr = "server=.;database=northwnd;integrate ...

  6. APPLICATION FAILED TO START 报错

    错误一 原因@Service 忘记加了

  7. printf:函数参数计算从右向左,从左向右?

    造冰箱的大熊猫@cnblogs 2019/8/3 1.问题 某天写了如下代码: unsigned char ReadByteFromFile ( FILE * fp ) { unsigned char ...

  8. 蓝桥 log大侠

    标题:Log大侠 atm参加了速算训练班,经过刻苦修炼,对以2为底的对数算得飞快,人称Log大侠. 一天,Log大侠的好友 drd 有一些整数序列需要变换,Log大侠正好施展法力... 变换的规则是: ...

  9. ros中同时订阅两个topic(2张图像)合并成一个topic(1张图像)

    2019-12-06 15:42:39 先暂时做个资料保存 要同时用两个红外相机,但是没有做硬件上的 时间戳同步,就是笔记本上同时插着两个相机. 两个topic发布各自相机的图像,然后要有个节点同时订 ...

  10. Python实用黑科技——以某个字段进行分组

    需求: 当前有个字典实例,你想以某个字段比如”日期”对整个字典里面的元素进行分组. 方法: itertools.groupby()函数是专门用来干这个活的.请看下面这个例子,这里有一个列表构成的字典, ...