网上找的mudos编译完全手册(包括本论坛转载的)有些关键地方需要修正
这次编译,并不完全是在windows下完成的,因为有些文件在windows下无法生成。
编译环境:
Windows Xp sp2,VC6.0(最好)和VS2003均可。还有一个工具是UltraEdit v15.10.0.1019(用来转换格式)
至于什么bison这些,我没有需要
现在来说步骤
1,首先下一份mudos V22pre11源代码,首先在lfreebsd环境下编译,linux下应该也可以,如果你没有,你可以叫朋友帮忙编译好
然后把所有的编译好的代码文件都发给你,这里面就会有关键的文件,比如类似grammar.tab.h等
2。这里是最关键的。把windows下的Mudos.mak文件放到上层代码目录下,然后,用UltraEdit 打开mak文件,利用里面的替换,把^n替换成^p,为什么要做这一步?主要是把unix格式的换行符变成windows下的换行符,然后保存。用VC6.0打开mudos.mak,应该就可以看到代码文件了,如果不转换,是无法看到代码文件的,我当初就卡在这里。
3,现在,如果没有cc.h,那你就添加一个cc.h文件,如果有了,那么替换一下,内容如下:
#define COMPILER "cl"
#define OPTIMIZE "-G4"
#define CFLAGS "-DWIN32 -D_ALL_SOURCE -G4"
#define OBJDIR "obj"
4,删除 工程里的malloc.c,mallocwrapper.c,在工程里添加package/uids.c,package/mudlib_stats.c
5,修改 backend.c 中的函数 call_heart_beat():
删除以下:
#ifdef WIN32
static long Win32Thread = -1;
#endif
删除以下:
if (Win32Thread == -1) Win32Thread = _beginthread(alarm_loop, 256, 0);
6,修改 crc32.h 在 compute_crc32 函数之前加入:
typedef unsigned int UINT32;
修改 crc32.c 在前面增加:
#include "crc32.h"
7,修改 crypt.h 中的句子
char *custom_crypt( CONST char *key, CONST char *salt, byte *rawout);
为
char *custom_crypt( char *key, char *salt, byte *rawout);
(即删除所有的 CONST)
8,将 interface.h, efuns_main.c, compile_file.c, mudlib/interface.c 中所有名为 interface 的变量名都替换成 if_t_array。
9,修改configure.h文件为下列内容,如果没有,请创建:
#define INCL_STDLIB_H
#define INCL_TIME_H
#define INCL_FCNTL_H
#define INCL_DOS_H
#define INCL_SYS_STAT_H
#define INCL_LIMITS_H
#define USE_STRUCT_DIRENT
#define INCL_STDARG_H
#define HAS_MEMMOVE
#define RAND
#define HAS_STRERROR
#define HAS_GETCWD
#define SIZEOF_INT 4
#define SIZEOF_PTR 4
#define SIZEOF_SHORT 2
#define SIZEOF_FLOAT 4
#define SIZEOF_INT 4
#define SIZEOF_PTR 4
#define SIZEOF_SHORT 2
#define SIZEOF_FLOAT 4
#define CONFIGURE_VERSION 5
好了。编译你的Mudos吧
编译好之后,是一个win32控制台的mudos,在winxp下可以运行,其他平台没测试
运行办法:
把生成好的mudos放到你mudlib的bin目录下,然后在创建一个快捷方式在当前目录,查看快捷方式的属性,并在目标那一栏mudos.exe后面空格加上你的config文件,比如:
F:\xkx\bin\MudOS.exe config.xkx
然后运行你的快捷方式,成功
这次编译,并不完全是在windows下完成的,因为有些文件在windows下无法生成。
编译环境:
Windows Xp sp2,VC6.0(最好)和VS2003均可。还有一个工具是UltraEdit v15.10.0.1019(用来转换格式)
至于什么bison这些,我没有需要
现在来说步骤
1,首先下一份mudos V22pre11源代码,首先在lfreebsd环境下编译,linux下应该也可以,如果你没有,你可以叫朋友帮忙编译好
然后把所有的编译好的代码文件都发给你,这里面就会有关键的文件,比如类似grammar.tab.h等
2。这里是最关键的。把windows下的Mudos.mak文件放到上层代码目录下,然后,用UltraEdit 打开mak文件,利用里面的替换,把^n替换成^p,为什么要做这一步?主要是把unix格式的换行符变成windows下的换行符,然后保存。用VC6.0打开mudos.mak,应该就可以看到代码文件了,如果不转换,是无法看到代码文件的,我当初就卡在这里。
3,现在,如果没有cc.h,那你就添加一个cc.h文件,如果有了,那么替换一下,内容如下:
#define COMPILER "cl"
#define OPTIMIZE "-G4"
#define CFLAGS "-DWIN32 -D_ALL_SOURCE -G4"
#define OBJDIR "obj"
4,删除 工程里的malloc.c,mallocwrapper.c,在工程里添加package/uids.c,package/mudlib_stats.c
5,修改 backend.c 中的函数 call_heart_beat():
删除以下:
#ifdef WIN32
static long Win32Thread = -1;
#endif
删除以下:
if (Win32Thread == -1) Win32Thread = _beginthread(alarm_loop, 256, 0);
6,修改 crc32.h 在 compute_crc32 函数之前加入:
typedef unsigned int UINT32;
修改 crc32.c 在前面增加:
#include "crc32.h"
7,修改 crypt.h 中的句子
char *custom_crypt( CONST char *key, CONST char *salt, byte *rawout);
为
char *custom_crypt( char *key, char *salt, byte *rawout);
(即删除所有的 CONST)
8,将 interface.h, efuns_main.c, compile_file.c, mudlib/interface.c 中所有名为 interface 的变量名都替换成 if_t_array。
9,修改configure.h文件为下列内容,如果没有,请创建:
#define INCL_STDLIB_H
#define INCL_TIME_H
#define INCL_FCNTL_H
#define INCL_DOS_H
#define INCL_SYS_STAT_H
#define INCL_LIMITS_H
#define USE_STRUCT_DIRENT
#define INCL_STDARG_H
#define HAS_MEMMOVE
#define RAND
#define HAS_STRERROR
#define HAS_GETCWD
#define SIZEOF_INT 4
#define SIZEOF_PTR 4
#define SIZEOF_SHORT 2
#define SIZEOF_FLOAT 4
#define SIZEOF_INT 4
#define SIZEOF_PTR 4
#define SIZEOF_SHORT 2
#define SIZEOF_FLOAT 4
#define CONFIGURE_VERSION 5
好了。编译你的Mudos吧
编译好之后,是一个win32控制台的mudos,在winxp下可以运行,其他平台没测试
运行办法:
把生成好的mudos放到你mudlib的bin目录下,然后在创建一个快捷方式在当前目录,查看快捷方式的属性,并在目标那一栏mudos.exe后面空格加上你的config文件,比如:
F:\xkx\bin\MudOS.exe config.xkx
然后运行你的快捷方式,成功
评论列表:
编译教程见
http://fluffos.github.io/build.html