附:MudOS v22.2b14下载连接

简单的编译步骤:

(1)运行./build.MudOS

(2)vim socket_efuns.c
       o 修改Ln:1198的代码为 
       addr_in = (local ? &lpc_socks[fd].l_addr : &lpc_socks[fd].r_addr);

(3)make

(4)第三步执行之后的最后一行会出现:

英文系统:make: *** No rule to make target `obj/malloc.o', needed by `driver'. Stop.

中文系统:make: *** 没有规则可以创建“driver”需要的目标“obj/malloc.o”。 停止。

解决方法:

  原封不动再次make即可。详细可参考连接:http://bluesock.org/~willg/blog/dev/mudos_under_ubuntu.html。

到此编译已经完成,下面进行安装。

(5)make install 不会出错。

-----------下面的还没有尝试,仅修改如上的内容就能编译了,即下面的选项是可选的------------

下面几个文件添加stdlib.h去掉一些警告(找不到exit()之类的)
vi edit_source.c
       添加 #include <stdlib.h>
vi preprocess.c
       添加 #include <stdlib.h>
vi make_finc.y
       添加 #include <stdlib.h>
修改一下option.h文件兼容老的lib
vi options.h
         添加巫师的功能
         修改 Ln:225 #undef NO_WIZARDS
         采用老的lpc语法(关于nosave - static之类的)
         修改 Ln:266 #undef SENSIBLE_MODIFIERS
         启用driver 的权限机制
         修改 Ln:659 #define PACKAGE_UIDS
   创建三个文件、否则会找不到  malloc.c 目标啥的  
    touch malloc.c
    touch mallocwrapper.c
    touch applies_table.c
    * 需要新建的三个文件是在make过程生成的,由于ubuntu下的make工具似乎不能识别make过程中的
      文件,所以需要新建三个空白文件,这样在make开始的时候就会识别到,当然在make过程中会复写这三个文件
    数据库部分、拷自nt2的driver 、(特此声明)
    由于以前的数据库api太老connect换成real_connect之类的
    添加数据库部分
    option.h修改下列配置
    #define PACKAGE_DB
    #ifdef PACKAGE_DB
    #undef USE_MSQL        /* MiniSQL, it's small; it's free */
    #define USE_MYSQL 2        /* MySQL, bigger; it's free */
    #define DEFAULT_DB USE_MYSQL    /* default database */
    #endif
    
    修改 db.h 头文件:
    将 24 行至 37 行注释掉,紧接着写上你自己的 MySQL 头文件的位置,
    例如在 /usr/local/mysql/include/mysql.h
    就写上:
    #include "/usr/local/mysql/include/mysql.h"
    
    在源代码目录里的 system_libs 文件里加上 mysql 连接库的位置,
    例如在 /usr/local/mysql/lib
    就加上:
    -L/usr/local/mysql/lib -lmysqlclient
   编译好的diver可能会遇到count(*)返零的问题
    MySQL_fetch对数据类型进行判断时、不包含Count(*)的数据类型
    最后default赋值为零
[font=楷体_gb2312;]    count(*)返回的数据了类型为FIELD_TYPE_LONGLONG[font=楷体_gb2312;]
    在db.c 650行左右添加[font=楷体_gb2312;] case FIELD_TYPE_LONGLONG:如下
switch (field->type) {
        case FIELD_TYPE_TINY:
        case FIELD_TYPE_SHORT:
        case FIELD_TYPE_DECIMAL:
        case FIELD_TYPE_LONG:
       case FIELD_TYPE_LONGLONG:
            v->item.type = T_NUMBER;
            v->item.u.number = atoi(target_row);
            break;

case FIELD_TYPE_FLOAT:
        case FIELD_TYPE_DOUBLE:
            v->item.type = T_REAL;
            v->item.u.real = atof(target_row);
            break;

case FIELD_TYPE_TINY_BLOB:
        case FIELD_TYPE_MEDIUM_BLOB:
        case FIELD_TYPE_LONG_BLOB:
        case FIELD_TYPE_BLOB:
        case FIELD_TYPE_STRING:
        case FIELD_TYPE_VAR_STRING:
                    if (field->flags & BINARY_FLAG) {
#ifndef NO_BUFFER_TYPE
                v->item.type = T_BUFFER;
                v->item.u.buf = allocate_buffer(field->length);
                write_buffer(v->item.u.buf, 0, target_row, field->length);
#else
                        v->item = const0u;
#endif
                    } else {
                v->item.type = T_STRING;
                if (target_row) {
                v->item.subtype = STRING_MALLOC;
                v->item.u.string = string_copy(target_row, "MySQL_fetch");
                } else {
                v->item.subtype = STRING_CONSTANT;
                v->item.u.string = "";
                }
                    }
            break;

default:
            v->item = const0u;
            break;
    }
    最后是time()不跑的问题
    在driver里面,有个变量current_time标示时间
    每次心跳时、会current_time++
    心跳的触发要看backend.c 186行左右 heart_beat_flag的标志变量
    heart_beat_flag为1才会出发
    heart_beat_flag 置1、是通过
    backend.c-> call_haert_beat()
     391行左右
    signal(SIGALRM, sigalrm_handler);
    ualarm(HEARTBEAT_INTERVAL, 0);
    到时触发函数sigalrm_handler()heart_beat_flag 置1
     在v22.2b14中ualarm没有调用成功、没有设置时钟、就不触发函数sigalrm_handler()
   心跳会停掉
    原因是ualarm.c文件#include "std.h"放的位置不正确
    因为 #ifndef HAS_UALARM 且 std.h里定义了HAS_UALARM 所以放到 #ifndef HAS_UALARM前
    就不会编译ualarm.c文件、就掉不到ualarm()
    应该将#include "std.h"放到 #ifndef HAS_UALARM 之后

ubuntu14.04LTS编译MUDOS v22.2b14的更多相关文章

  1. Ubuntu14.04LTS下使用eclipse搭建Cocos2d-x的Android环境

    from://http://www.58player.com/blog-2534-94136.html 最近想玩玩游戏制作,于是选择了目前流行的游戏引擎Cocos2d-x,这个东西虽然有Android ...

  2. ubuntu14.04LTS安装vmware10.0.1

    因为所用Ubuntu系统是32位,而VMware最新版本又不支持32位,只好下载以前版本vmware10.0.1. vmware10.0.1下载地址:  http://down.it168.com/1 ...

  3. Ubuntu14.04编译安装mysql5.6.26

    Ubuntu14.04编译安装mysql5.6.26 (1)安装编译源码需要的包 sudo apt-get install make cmake gcc g++ bison libncurses5-d ...

  4. ubuntu14.04LTS更新源

    这两天一直在使用Linux系统做一些事情,但是又会有特别多的报错,其中有一个问题就是源的问题,我知道有太多太多的人写这个源更新的帖子,我现在也写一篇关于源更新的帖子,只是针对ubuntu14.04LT ...

  5. Thinkpad W520 完美安装Ubuntu14.04LTS

    Thinkpad W520 完美安装Ubuntu14.04LTS Ubuntu已经升级到14.04LTS,这是个长期支持的版本号.自从上次安装12.04LTS之后一直没有升级. 于是从站点上下载Ubu ...

  6. ROS(indigo)机器人操作系统学习资料和常用功能包汇总整理(ubuntu14.04LTS)

    ROS(indigo)机器人操作系统学习资料和常用功能包汇总整理(ubuntu14.04LTS) 1. 网站资源: ROSwiki官网:http://wiki.ros.org/cn GitHub    ...

  7. win7下安装ubuntu14.04lts 双系统

    首先,在win7下的硬盘管理 压缩出一块空闲的分区,即压缩卷之后,不做任何操作. 并且确保该空闲卷是“基本”类型     不是的话,参考http://www.jianshu.com/p/2f07312 ...

  8. Ubuntu14.04LTS下 JAVA+HADOOP

    首先在虚拟机中安装了Ubuntu14.04LTS 前期工作: 更新源.更新安装vim.安装vmtools工具.安装中文输入法 sudo apt-get update sudo apt-get inst ...

  9. ubuntu14.04 编译安装highpoint rocketraid 2720驱动

    highpoint官方只有ubuntu12.10驱动,对于ubuntu14.04或者12.04,需要手工编译安装驱动. 基本步骤: 1.下载rocketraid 2720驱动源代码 2.在一台装有ub ...

随机推荐

  1. mysql多表查询例子

    [理解方式]先分别找出每个表中查询出来的结果,然后再将两个结果合并. create database test charset utf8 collate utf8_bin;use test;creat ...

  2. zookeeper第二课 客户端的简单命令

    zookeeper的每个节点既可以是目录也可以是文件,节点上只存一些协调数据(状态.配置.位置),单位一般是KB,大部分数据用sdfs上 只有持久化的节点才可以有子节点,临时节点不可以有自子节点. 客 ...

  3. PHP-----类与对象,成员方法,成员属性,构造方法,析构方法

    php里面的类-----class XX{},通过类的定义,可以使用调用类里面的成员属性和成员方法. 对象---一个类就是一个对象,一个对象可以有多个属性,一个类可以有多个成员方法. 构造方法:一个类 ...

  4. 将php网站移到CentOS 6.7上[二]:将网站部署到服务器上

    首先,确保lamp环境已安装好.准备好项目源代码,数据库备份文件等.由于没有安装好VNC,因此只能用ssh部署了. 将项目源代码压缩,Linux默认是支持SFTP的,用SFTP将源代码压缩包上传到 / ...

  5. 根据多年经验整理的《互联网MySQL开发规范》

    一.基础规范 使用 INNODB 存储引擎 表字符集使用 UTF8  所有表都需要添加注释 单表数据量建议控制在 5000W 以内 不在数据库中存储图⽚.文件等大数据 禁止在线上做数据库压力测试 禁⽌ ...

  6. SQL语言增加、修改、删除数据的语法

    增加 insert into 表名(字段1,字段2) values ('字段1的值','字段2的值'); 修改 update 表名 set 字段1='赋予字段1的新值',字段2='赋予字段2的新值' ...

  7. vim 替换操作

    全局替换真正使用的是两个ex命令 g(global) 和 :s(switch) 1.替换命令语法 :s/old/new/ 这将把当前模式中的第一个old替换为new 2.替换命令语法 :s/old/n ...

  8. linux 真·随笔

    复制操作 命令行模式下输入 6,9 co 12 复制第6行到第9行之间的内容到第12行后面. vim如何删除文件中所有东西 ggdG :%d 移动光标到指定行的行尾 $:移动光标到行尾 n$:移动到第 ...

  9. 能源项目xml文件 -- springMVC-servlet.xml -- default-lazy-init

    <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w ...

  10. Android权限声明

    1.网络 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/ > < ...