北大侠客行MUD论坛's Archiver

dreamnb 发表于 2010-7-15 11:27 AM

MudOSv22pre11_For_Linux.zip 架设xkx2001求助!

上次问了问mudos编译问题,现在换了32位平台已经解决了mudos编译。
目前在网上下了一个xkx2001的mudlib,是windows平台的,而且我在windows平台运行,可以正确出现登陆画面了
现在我把这个mudlib拷贝到linux的/mud/xkx2001目录里。并用
find . -name *.c|xargs dos2unix
find . -name *.h|xargs dos2unix
find . -name *.o|xargs dos2unix
修改了编码。
然后再将编译好的driver拷贝到mudlib下面。

先执行./addr_server 5555
然后修改mudlib下的config.xkx文件
address server port : 5555
# absolute pathname of mudlib
# mudlib directory : .
mudlib directory : /mud/xkx2001
# absolute pathname of driver/config dir
# binary directory : .
binary directory : .
# debug.log and author/domain stats are stored here
log directory : /log

然后执行./driver config.xkx

提示
侠客行 (MudOS v22pre11) starting up on Linux - Thu Jul 15 11:12:12 2010

Connection to address server (localhost 5555) refused.
include/globals.h line 103: Warning: redefinition of #define ROOM
]simul_efun loaded successfully.
include/globals.h line 103: Warning: redefinition of #define ROOM

Loading preloaded files ...
Initializations complete.
Accepting connections on port 8888.

当我连接8888的时候,就会出现错误提示

执行时段错误 *Object cannot be loaded during compilation.
程式:adm/single/simul_efun.c µÚ 12 ÐÐ
物件: adm/single/simul_efun
呼叫来自:adm/single/master.c µÄ connect() µÚ 17 ÐУ¬Îï¼þ£º adm/single/master
呼叫来自:adm/single/master.c µÄ CATCH() µÚ 17 ÐУ¬Îï¼þ£º adm/single/master
呼叫来自:adm/single/master.c µÄ log_error() µÚ 124 ÐУ¬Îï¼þ£º adm/single/master
呼叫来自:adm/single/simul_efun.c µÄ wizardp() µÚ 12 ÐУ¬Îï¼þ£º adm/single/simul_efun
include/globals.h line 103: Warning: redefinition of #define ROOM


后面还有很多类似信息

jason 发表于 2010-7-15 11:34 AM

dos2unix只有必要对非源代码执行。.c的问题不需要。根据错误信息,你应该打开master.c来看看到底里面有些啥

icer 发表于 2010-7-15 01:42 PM

把你的debug.log放到windows或者有中文环境的系统下看到底是啥信息,然后到master.c里去debug

dreamnb 发表于 2010-7-15 10:51 PM

下面是完整的debug.log文件,还望高手给看看什么问题
----------------------------------------------------------------------------
侠客行 (MudOS v22pre11) starting up on Linux - Thu Jul 15 11:14:08 2010


Connection to address server (localhost 5555) refused.
include/globals.h line 103: Warning: redefinition of #define ROOM

include/globals.h line 103: Warning: redefinition of #define ROOM


Loading preloaded files ...
Initializations complete.

Accepting connections on port 8888.

执行时段错误:*Object cannot be loaded during compilation.

程式:adm/single/simul_efun.c 第 12 行
物件: adm/single/simul_efun
呼叫来自:adm/single/master.c 的 connect() 第 17 行,物件: adm/single/master
呼叫来自:adm/single/master.c 的 CATCH() 第 17 行,物件: adm/single/master
呼叫来自:adm/single/master.c 的 log_error() 第 124 行,物件: adm/single/master
呼叫来自:adm/single/simul_efun.c 的 wizardp() 第 12 行,物件: adm/single/simul_efun
include/globals.h line 103: Warning: redefinition of #define ROOM


执行时段错误:*Object cannot be loaded during compilation.

程式:adm/single/simul_efun.c 第 12 行
物件: adm/single/simul_efun
呼叫来自:adm/single/master.c 的 connect() 第 17 行,物件: adm/single/master
呼叫来自:adm/single/master.c 的 CATCH() 第 17 行,物件: adm/single/master
呼叫来自:adm/single/master.c 的 log_error() 第 124 行,物件: adm/single/master
呼叫来自:adm/single/simul_efun.c 的 wizardp() 第 12 行,物件: adm/single/simul_efun
include/globals.h line 103: Warning: redefinition of #define ROOM


执行时段错误:*Object cannot be loaded during compilation.

程式:adm/single/simul_efun.c 第 12 行
物件: adm/single/simul_efun
呼叫来自:adm/single/master.c 的 connect() 第 17 行,物件: adm/single/master
呼叫来自:adm/single/master.c 的 CATCH() 第 17 行,物件: adm/single/master
呼叫来自:adm/single/master.c 的 log_error() 第 124 行,物件: adm/single/master
呼叫来自:adm/single/simul_efun.c 的 wizardp() 第 12 行,物件: adm/single/simul_efun
include/globals.h line 103: Warning: redefinition of #define ROOM


执行时段错误:*Object cannot be loaded during compilation.

程式:adm/single/simul_efun.c 第 12 行
物件: adm/single/simul_efun
呼叫来自:adm/single/master.c 的 connect() 第 17 行,物件: adm/single/master
呼叫来自:adm/single/master.c 的 CATCH() 第 17 行,物件: adm/single/master
呼叫来自:adm/single/master.c 的 log_error() 第 124 行,物件: adm/single/master
呼叫来自:adm/single/simul_efun.c 的 wizardp() 第 12 行,物件: adm/single/simul_efun
include/globals.h line 103: Warning: redefinition of #define ROOM


执行时段错误:*Object cannot be loaded during compilation.

程式:adm/single/simul_efun.c 第 12 行
物件: adm/single/simul_efun
呼叫来自:adm/single/master.c 的 connect() 第 17 行,物件: adm/single/master
呼叫来自:adm/single/master.c 的 CATCH() 第 17 行,物件: adm/single/master
呼叫来自:adm/single/master.c 的 log_error() 第 124 行,物件: adm/single/master
呼叫来自:adm/single/simul_efun.c 的 wizardp() 第 12 行,物件: adm/single/simul_efun
include/globals.h line 103: Warning: redefinition of #define ROOM


执行时段错误:*Object cannot be loaded during compilation.

程式:adm/single/simul_efun.c 第 12 行
物件: adm/single/simul_efun
呼叫来自:adm/single/master.c 的 connect() 第 17 行,物件: adm/single/master
呼叫来自:adm/single/master.c 的 CATCH() 第 17 行,物件: adm/single/master
呼叫来自:adm/single/master.c 的 log_error() 第 124 行,物件: adm/single/master
呼叫来自:adm/single/simul_efun.c 的 wizardp() 第 12 行,物件: adm/single/simul_efun
include/globals.h line 103: Warning: redefinition of #define ROOM


执行时段错误:*Object cannot be loaded during compilation.

程式:adm/single/simul_efun.c 第 12 行
物件: adm/single/simul_efun
呼叫来自:adm/single/master.c 的 connect() 第 17 行,物件: adm/single/master
呼叫来自:adm/single/master.c 的 CATCH() 第 17 行,物件: adm/single/master
呼叫来自:adm/single/master.c 的 log_error() 第 124 行,物件: adm/single/master
呼叫来自:adm/single/simul_efun.c 的 wizardp() 第 12 行,物件: adm/single/simul_efun
include/globals.h line 103: Warning: redefinition of #define ROOM


执行时段错误:*Object cannot be loaded during compilation.

程式:adm/single/simul_efun.c 第 12 行
物件: adm/single/simul_efun
呼叫来自:clone/user/login.c 的 logon() 第 12 行,物件: clone/user/login#0
呼叫来自:adm/single/master.c 的 log_error() 第 124 行,物件: adm/single/master
呼叫来自:adm/single/simul_efun.c 的 wizardp() 第 12 行,物件: adm/single/simul_efun
include/globals.h line 103: Warning: redefinition of #define ROOM


执行时段错误:*Object cannot be loaded during compilation.

程式:adm/single/simul_efun.c 第 12 行
物件: adm/single/simul_efun
呼叫来自:clone/user/login.c 的 logon() 第 12 行,物件: clone/user/login#0
呼叫来自:adm/single/master.c 的 log_error() 第 124 行,物件: adm/single/master
呼叫来自:adm/single/simul_efun.c 的 wizardp() 第 12 行,物件: adm/single/simul_efun
adm/daemons/logind.c line 9: Warning: redefinition of #define MAX_USERS


执行时段错误:*Object cannot be loaded during compilation.

程式:adm/single/simul_efun.c 第 12 行
物件: adm/single/simul_efun
呼叫来自:clone/user/login.c 的 logon() 第 12 行,物件: clone/user/login#0
呼叫来自:adm/daemons/logind.c 的 create() 第 71 行,物件: adm/daemons/logind
呼叫来自:adm/single/master.c 的 valid_seteuid() 第 273 行,物件: adm/single/master
呼叫来自:adm/single/master.c 的 log_error() 第 124 行,物件: adm/single/master
呼叫来自:adm/single/simul_efun.c 的 wizardp() 第 12 行,物件: adm/single/simul_efun
include/globals.h line 103: Warning: redefinition of #define ROOM


执行时段错误:*Bad argument 1 to getuid()
Expected: object Got: "include/globals.h".

程式:adm/daemons/securityd.c 第 734 行
物件: adm/daemons/securityd
呼叫来自:clone/user/login.c 的 logon() 第 12 行,物件: clone/user/login#0
呼叫来自:adm/daemons/logind.c 的 create() 第 71 行,物件: adm/daemons/logind
呼叫来自:adm/single/master.c 的 valid_seteuid() 第 273 行,物件: adm/single/master
呼叫来自:adm/daemons/securityd.c 的 valid_seteuid() 第 734 行,物件: adm/daemons/securityd

icer 发表于 2010-7-15 10:58 PM

你编译mudos的时候是不是没define seteuid那个选项。编译之前需要仔细研究options.h,根据mudlib的类型和需要进行修改

dreamnb 发表于 2010-7-15 11:01 PM

...还有options.h需要修改??确实不知道。我再看看,感谢。
有关于修改options.h这个文件的教程或者说明吗?

再次感谢icer

dreamnb 发表于 2010-7-15 11:22 PM

我尝试修改了options.h里面的PACKAGE_UIDS项为#undef PACKAGE_UIDS
然后重新编译,结果提示更不好了。好像这个PACKAGE_UIDS必须是#define吧。。。
还有什么需要在options.h里面调整的吗?
----------------------------------------------------------------------------
侠客行 (MudOS v22pre11) starting up on Linux - Thu Jul 15 23:06:24 2010


Connected to address server on localhost port 5555
include/globals.h line 103: Warning: redefinition of #define ROOM

adm/simul_efun/object.c line 60: Undefined function getuid
adm/simul_efun/object.c line 60: Type of returned value doesn't match function return type ( unknown vs string )
adm/simul_efun/object.c line 79: Undefined function geteuid
adm/simul_efun/path.c line 27: Bad type for argument 1 of user_path ( string vs unknown )
adm/simul_efun/path.c line 29: Bad type for argument 1 of user_path ( string vs unknown )
adm/simul_efun/file.c line 13: Undefined function seteuid
No error handler for error: *Error in loading object '/adm/single/simul_efun'
program: (none), object: (none), file: (none)
The simul_efun (/adm/single/simul_efun) and master (/adm/single/master) objects must be loadable.

dreamnb 发表于 2010-7-15 11:36 PM

下面两个和UID有关的都设置了,提示还是和最初一样。
#define PACKAGE_UIDS
#define AUTO_SETEUID

我把simul_efun.c也贴出来,大侠给看看有问题没有。关键是这些东西在windows可以运行。。。。到linux就不灵了

----------------------------------------------------------------------------
侠客行 (MudOS v22pre11) starting up on Linux - Thu Jul 15 23:06:24 2010


Connected to address server on localhost port 5555
include/globals.h line 103: Warning: redefinition of #define ROOM

adm/simul_efun/object.c line 60: Undefined function getuid
adm/simul_efun/object.c line 60: Type of returned value doesn't match function return type ( unknown vs string )
adm/simul_efun/object.c line 79: Undefined function geteuid
adm/simul_efun/path.c line 27: Bad type for argument 1 of user_path ( string vs unknown )
adm/simul_efun/path.c line 29: Bad type for argument 1 of user_path ( string vs unknown )
adm/simul_efun/file.c line 13: Undefined function seteuid
No error handler for error: *Error in loading object '/adm/single/simul_efun'
program: (none), object: (none), file: (none)
The simul_efun (/adm/single/simul_efun) and master (/adm/single/master) objects must be loadable.

icer 发表于 2010-7-16 12:55 AM

/*
* PACKAGE_UIDS: define this if you want a driver that does use uids.
*  
*/
#undef PACKAGE_UIDS

/* AUTO_SETEUID: when an object is created it's euid is automatically set to
*   the equivalent of seteuid(getuid(this_object())).  undef AUTO_SETEUID
*   if you would rather have the euid of the created object be set to 0.
*/
#define AUTO_SETEUID

/* AUTO_TRUST_BACKBONE: define this if you want objects with the backbone
*   uid to automatically be trusted and to have their euid set to the uid of
*   the object that forced the object's creation.
*/
#define AUTO_TRUST_BACKBONE

dreamnb 发表于 2010-7-16 08:09 AM

icer 大侠,如果用按照你上面的配置用#undef PACKAGE_UIDS,直接就提示下面信息了
Connected to address server on localhost port 5555
include/globals.h line 103: Warning: redefinition of #define ROOM

adm/simul_efun/object.c line 60: Undefined function getuid
adm/simul_efun/object.c line 60: Type of returned value doesn't match function return type ( unknown vs string )
adm/simul_efun/object.c line 79: Undefined function geteuid
adm/simul_efun/path.c line 27: Bad type for argument 1 of user_path ( string vs unknown )
adm/simul_efun/path.c line 29: Bad type for argument 1 of user_path ( string vs unknown )
adm/simul_efun/file.c line 13: Undefined function seteuid
No error handler for error: *Error in loading object '/adm/single/simul_efun'
program: (none), object: (none), file: (none)
The simul_efun (/adm/single/simul_efun) and master (/adm/single/master) objects must be loadable.

dreamnb 发表于 2010-7-16 08:10 AM

我理解这个adm/simul_efun/object.c line 60: Undefined function getuid
是不是就是因为#undef PACKAGE_UIDS????

dreamnb 发表于 2010-7-16 08:20 AM

我理解PACKAGE_UIDS一定要define,否则就回提示adm/simul_efun/object.c line 60: Undefined function getuid
和adm/simul_efun/object.c line 79: Undefined function geteuid。

如果PACKAGE_UIDS是define后,可以出现
Connected to address server on localhost port 5555
include/globals.h line 103: Warning: redefinition of #define ROOM

]simul_efun loaded successfully.
include/globals.h line 103: Warning: redefinition of #define ROOM


Loading preloaded files ...
Initializations complete.

Accepting connections on port 8888.

说明已经启动了一部分,并且在8888端口监听了。但是连接8888的时候还是出现错误。
执行时段错误:*Object cannot be loaded during compilation.

程式:adm/single/simul_efun.c 第 12 行
物件: adm/single/simul_efun
呼叫来自:adm/single/master.c 的 connect() 第 17 行,物件: adm/single/master
呼叫来自:adm/single/master.c 的 CATCH() 第 17 行,物件: adm/single/master
呼叫来自:adm/single/master.c 的 log_error() 第 124 行,物件: adm/single/master
呼叫来自:adm/single/simul_efun.c 的 wizardp() 第 12 行,物件: adm/single/simul_efun
include/globals.h line 103: Warning: redefinition of #define ROOM

dreamnb 发表于 2010-7-16 08:21 AM

icer老大,我把simul_efun.c和master.c也放上来,您给看看什么问题。
这两个文件在windows下面的mudos.exe是可以跑起来的

jason 发表于 2010-7-16 10:29 AM

err = catch(login_ob = new(LOGIN_OB));
这句话引发的错误

dreamnb 发表于 2010-7-16 11:01 AM

err = catch(login_ob = new(LOGIN_OB));
这句话引发的错误,请问如何修改呢?
我看ES2的代码是err = catch(ob = new(LOGIN_OB));
但是好像只是变量名不同,应该不是这个问题呀。。。。难道是catch函数问题?

[[i] 本帖最后由 dreamnb 于 2010-7-16 11:04 AM 编辑 [/i]]

jason 发表于 2010-7-16 11:20 AM

应该是和lib无关,还是mudos option的问题。

jason 发表于 2010-7-16 02:25 PM

把你的options.h贴出来吧

dreamnb 发表于 2010-7-16 08:49 PM

恩。确实是options.h。今天请教了下 黄小邪(北美xkx开发的wiz)。
告诉我是#define CAST_CALL_OTHERS选项,我原来设置成了undef了。
不过还是没有顺利运行起来,又提示新的错误了。

include/globals.h line 103: Warning: redefinition of #define ROOM

adm/simul_efun/chinese.c line 5: Type of returned value doesn't match function return type ( unknown vs string )
adm/simul_efun/chinese.c line 10: Type of returned value doesn't match function return type ( unknown vs string )
adm/simul_efun/wizard.c line 6: Type of returned value doesn't match function return type ( unknown vs string )
adm/simul_efun/wizard.c line 12: Bad left argument to '>' : "unknown "
adm/simul_efun/wizard.c line 17: Type of returned value doesn't match function return type ( unknown vs int )
adm/simul_efun/message.c line 11: Bad assignment ( string vs unknown ).
No error handler for error: *Error in loading object '/adm/single/simul_efun'
program: (none), object: (none), file: (none)
The simul_efun (/adm/single/simul_efun) and master (/adm/single/master) objects must be loadable.
~

目前登陆都剩下这些错误了,估计还是和options.h有关系。。。。不过我还在找,希望这里的高手也指点指点

dreamnb 发表于 2010-7-16 08:50 PM

options.h我也发上来吧

jason 发表于 2010-7-17 11:59 AM

你直接用一份标准的xkx的mudlib用的 options吧

页: [1] 2

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.