背景:
阅读文章

在Linux或者Unix下的编译mudos过程

[日期:2009-10-30] 来源:  作者:MUDWIZ [字体: ]

   MudOS 是整个Mud的基础。一个成功Mud 不只需要一个成熟的MudLIB,而且需要一个稳定的MudOS。而对于不同版本的MudOS,MudLIB也需要一定的修改。如何修改就不是本文的主要介绍内容,以后有时间继续和大家谈谈如何对于不同版本的MudOS来修改MudLIB。本次的主要内容是如何在 Linux上成功的编译MudOS和使用编译好的MudOS成功架设一个Mud。


   现在流行的MudOS有两个版本:MudOS v22pre11和 MudOS v22.1b22。这两个版本的MudOS差异甚大,但是在不同版本的Linux下编译过程基本上是一样的。下面就以v22pre11来介绍如何编译MudOS。
   1、获得MudOS 源代码:
对于C ++功力不够的巫师还无法修改。而从这里下载的源代码已经修改好了,不需要修改就可以直接编译。
这里经常见到的错误有
●没有下载原始MudOS源代码的补丁(MudOS V22pre11源代码)。
●原始的MudOS 源代码中的几个文件有错误必须经过修改后才能成功架设Mud。否则就虽然能成功编译MudOS 但是启动Mud 时会出现各种的错误。

2、上传源代码到服务器。
在上传过程中有些朋友会做出一些致命的错误如下:
●将下载回的tar 压缩包解开后在用WinZip压缩后才上传。×这个是不行的。因为用WinZip压缩后的所有文件都为Dos格式。Linux或Unix下的文件格式不同。所以在服务器解压开的文件内每行尾都有一个^M的符号。Unix是不能承认的。无法编译成功。
自然做法只有一个了,把从这里下载的MudOS V22pre11源代码直接上传到服务器,用Linux特有的解压命令进行解压:
命令格式:
解压 tar -zcvf XX.tgz XX 或者zcat XX.tar|tar xv

3、执行编译初始化Shell命令集。
执行命令:
./build.MudOS
常见问题:
●没有严格遵守Lunix和Unix下的文件名格式。(只要做好上面一步上传工作就没问题)
●要严格打入build.MudOS。
●还有一点就是字母的大小写问题也使很重要的,大写的就必须大写,小写的就必须小写,否则错误。
推荐:
由于不同的Lunix版本,使用的Shell也不同,所以最好用以下格式打入此命令:
./build.MudOS
执行后显示如下:


./build.MudOS
Preparing to build standard MudOS driver ...
Trying out some stuff to see what works; ignore errors ...
./build.MudOS: gmake: command not found
make: Nothing to be done for `nothing'.
./build.MudOS: xlc: command not found
mkdir: cannot make directory `tmp': File exists
install: illegal option -- f
Try `install --help' for more information.
rm: tmp/insttest: No such file or directory
mkdir: cannot make directory `obj': File exists
***************** Configuration completed **************
Installing MudOS on Linux

Using install -c to install binaries in ../bin.
Using gcc -E for preprocessing.
Using gcc -O2 -fomit-frame-pointer -fstrength-reduce to compile.
Using bison -d -y to make the compiler.
Edit GNUmakefile if this is not what you want

Otherwise, type 'make' to build MudOS, then 'make install'.


图片:

4、执行编译清除旧文件。
命令格式: make clean
执行后显示情况如下:


make clean
(cd packages; make clean)
make[1]: Entering directory `/home/zeus/mudos/v22pre11/v22pre11/src/packages'

rm -f *.o
rm -f packages.a
make[1]: Leaving directory `/home/zeus/mudos/v22pre11/v22pre11/src/packages'
(cd mudlib; make clean)
make[1]: Entering directory `/home/zeus/mudos/v22pre11/v22pre11/src/mudlib'
rm -f *.o
rm -f mudlib.a
make[1]: Leaving directory `/home/zeus/mudos/v22pre11/v22pre11/src/mudlib'
rm -rf obj *.o *.tab.c *.tab.h
mkdir obj
rm -f efun_defs.c option_defs.c
rm -f opcodes.h efunctions.h opc.h efun_protos.h
rm -f malloc.c mallocwrapper.c
rm -f func_spec.cpp files
rm -f grammar.y comptest* a.out
rm -f packages/Makefile packages/GNUmakefile packages/packages
rm -f Makefile.MudOS GNUmakefile.MudOS
rm -f cc.h edit_source
rm -f core y.output testsuite/core testsuite/tmp/*
rm -rf testsuite/binaries
rm -f testsuite/OBJ_DUMP* testsuite/test_file testsuite/testfile
rm -f testsuite/tmp_eval_file.c testsuite/sf.o testsuite/ed_test
rm -f testsuite/log/log testsuite/log/debug.log testsuite/log/compile
find . -name "*~" -print | xargs rm
rm: too few arguments
Try `rm --help' for more information.
make: [clean] Error 123 (ignored)
find . -name "*.orig" -print | xargs rm
rm: too few arguments
Try `rm --help' for more information.
make: [clean] Error 123 (ignored)
find . -name "*.rej" -print | xargs rm
rm: too few arguments
Try `rm --help' for more information.
make: [clean] Error 123 (ignored)
rm -f *.ln tags TAGS
rm -f driver driver.old addr_server
rm -f Dependencies tmpdepend
touch Dependencies


图象显示:


5、执行编译命令集。
命令格式: ./make (这个和原程序中的makefile对应的)
执行后显示情况:


make
rm -f cc.h
echo "/* this file automatically generated by the Makefile */" > cc.h
echo '#define COMPILER "gcc"' >> cc.h
echo '#define OPTIMIZE "-O2 -fomit-frame-pointer -fstrength-reduce"' >> cc.h
echo '#define CFLAGS " -O2 -fomit-frame-pointer -fstrength-reduce"' >> cc.h
echo '#define OBJDIR "obj"' >> cc.h
gcc -o obj/edit_source.o -c edit_source.c
gcc -O2 -fomit-frame-pointer -fstrength-reduce -o obj/hash.o -c hash.c
bison -d -y make_func.y
rm -f make_func.tab.c
mv y.tab.c make_func.tab.c
gcc -o obj/make_func.tab.o -c make_func.tab.c
gcc obj/edit_source.o obj/hash.o obj/make_func.tab.o -o edit_source
if test \( ! -r configure.h \) -o \( ! -r configuration \); then \
rm -f configuration; \
touch configuration; \
fi
if test "Machine `uname -a` Configure version 5" = "`cat configuration`"; then \
echo "Skipping configuration ..."; \
else \
./edit_source -configure; \
echo "Machine `uname -a` Configure version 5" > configuration; \
fi
Skipping configuration ...
./edit_source -options -malloc -build_func_spec 'gcc -E ' \
-process grammar.y.pre
No "local_options" file present. If you create one from "options.h",
you can use it when you get a new driver, and you will be warned if there are
changes to the real options.h which you should include in your local file.

 

收藏 推荐 打印 | 录入:sbso | 阅读:
本文评论   [发表评论]   全部评论 (0)
内容推送
52mud提供
一起回忆泥巴游戏QQ群68186072
52mud官方微信公众平台
热门评论