Cygwin Again :)

Posted by Yakir on Fri 17 Aug 2001 09:47 PM — 5 posts, 18,461 views.

#0
I checked and I had aparently not downloaded a few of the files (including the library), so i downloaded all the rest of the files and compiled. The compile managed to compile most of the .o files and then I got an error and it stoped. I got an 'implicit decleration of re_exec' and several 'undefined reference to crypt' so I uncommented the correct lines in the Makefile, but I also got an 'undefined reference to RENAME' and I haven't the faintest clue what to do about it. Despite my 'valiant' tries, here is what it looks like when I try to 'make':



make $
make smaug
'make[1]: Entering directory `/home/smaug/dist/src
rm -f smaug
gcc    -lcrypt -lregex -DUSE_IMC -o smaug act_comm.o act_info.o act_move.o act_o
bj.o act_wiz.o boards.o build.o clans.o comm.o comments.o const.o db.o deity.o f
ight.o handler.o hashstr.o ibuild.o ident.o interp.o magic.o makeobjs.o mapout.o
misc.o mpxset.o mud_comm.o mud_prog.o player.o polymorph.o requests.o reset.o s
ave.o shops.o skills.o special.o tables.o track.o update.o grub.o stat_obj.o ban
o services.o planes.o imm_host.o imc.o imc-mail.o imc-interp.o imc-util.o imc-c.
onfig.o imc-events.o imc-version.o imc-mercbase.o ice.o icec.o icec-mercbase.o c
olorize.o
:'act_comm.o: In function `is_profane
'home/smaug/dist/src/act_comm.c:3347: undefined reference to `re_exec/
:'act_info.o: In function `do_hset
'home/smaug/dist/src/act_info.c:2041: undefined reference to `RENAME/
:'act_info.o: In function `do_password
'home/smaug/dist/src/act_info.c:3474: undefined reference to `crypt/
:'act_wiz.o: In function `do_balzhur
'home/smaug/dist/src/act_wiz.c:3258: undefined reference to `RENAME/
:'act_wiz.o: In function `do_mortalize
'home/smaug/dist/src/act_wiz.c:4880: undefined reference to `RENAME/
:'act_wiz.o: In function `do_form_password
'home/smaug/dist/src/act_wiz.c:5441: undefined reference to `crypt/
:'act_wiz.o: In function `do_destroy
'home/smaug/dist/src/act_wiz.c:5756: undefined reference to `RENAME/
'home/smaug/dist/src/act_wiz.c:5784: undefined reference to `RENAME/
:'act_wiz.o: In function `do_pcrename
'home/smaug/dist/src/act_wiz.c:9922: undefined reference to `RENAME/
'home/smaug/dist/src/act_wiz.c:9925: undefined reference to `RENAME/
:'build.o: In function `do_mset
'home/smaug/dist/src/build.c:1692: undefined reference to `crypt/
:'build.o: In function `fold_area
'home/smaug/dist/src/build.c:5889: undefined reference to `RENAME/
:'build.o: In function `do_installarea
'home/smaug/dist/src/build.c:6613: undefined reference to `RENAME/
:'comm.o: In function `nanny
'home/smaug/dist/src/comm.c:1663: undefined reference to `crypt/
'home/smaug/dist/src/comm.c:1750: undefined reference to `crypt/
'home/smaug/dist/src/comm.c:1771: undefined reference to `crypt/
:'save.o: In function `save_char_obj
'home/smaug/dist/src/save.c:191: undefined reference to `RENAME/
'home/smaug/dist/src/save.c:258: undefined reference to `RENAME/
collect2: ld returned 1 exit status
make[1]: *** [smaug] Error 1
'make[1]: Leaving directory `/home/smaug/dist/src
make: *** [all] Error 2



My Makefile is as follows:



CC      = gcc
#PROF    = -p
NOCRYPT =

# Uncomment the two lines below if compiling on a Solaris box
#SOLARIS_FLAG = -Dsun -DSYSV
#SOLARIS_LINK = -lnsl -lsocket

#Uncomment the line below if you are getting a line like:
#interp.c:757: warning: int format, time_t arg (arg 7)
TIME = -DTIMEFORMAT

#Uncomment the line below if you are getting implicit decleration of re_exec
REG = -DREGEX

#Uncomment the line below if you are getting undefined re_exec errors
NEED_REG = -lregex

#Uncomment the line below if you are getting undefined crypt errors
NEED_CRYPT = -lcrypt

#DBUGFLG = -DREQUESTS

#Uncomment the line below if you want a performance increase though beware
#your core files may not be as much of a benefit if you do.
#OPT_FLAG = -finline-functions -funroll-loops -fdefer-pop -fstrength-reduce

C_FLAGS = $(OPT_FLAG) -O -g3 -Wall -Wuninitialized $(PROF) $(NOCRYPT) $(DBUGFLG) -DSMAUG $(SOLARIS_FLAG) $(TIME) $(REG)
L_FLAGS = $(OPT_FLAG) $(PROF) $(SOLARIS_LINK) $(NEED_CRYPT) $(NEED_REG)

#Uncomment the next three comments below if you want to use IMC
USE_IMC    = -DUSE_IMC

IMC_OFILES = imc.o imc-mail.o imc-interp.o imc-util.o imc-config.o \
        imc-events.o imc-version.o imc-mercbase.o ice.o icec.o icec-mercbase.o

IMC_CFILES = imc.c imc-mail.c imc-interp.c imc-util.c imc-config.c \
        imc-events.c imc-version.c imc-mercbase.c ice.c icec.c icec-mercbase.c

O_FILES = act_comm.o act_info.o act_move.o act_obj.o act_wiz.o boards.o \
          build.o clans.o comm.o comments.o const.o db.o deity.o fight.o \
          handler.o hashstr.o ibuild.o ident.o interp.o magic.o makeobjs.o \
          mapout.o misc.o mpxset.o mud_comm.o mud_prog.o player.o polymorph.o \
          requests.o reset.o save.o shops.o skills.o special.o tables.o \
          track.o update.o grub.o stat_obj.o ban.o services.o planes.o \
          imm_host.o $(IMC_OFILES) colorize.o 

C_FILES = act_comm.c act_info.c act_move.c act_obj.c act_wiz.c boards.c \
          build.c clans.c comm.c comments.c const.c db.c deity.c fight.c \
          handler.c hashstr.c ibuild.c ident.c interp.c magic.c makeobjs.c \
          mapout.c misc.c mpxset.c mud_comm.c mud_prog.c player.c polymorph.c \
          requests.c reset.c save.c shops.c skills.c special.c tables.c \
          track.c update.c grub.c stat_obj.c ban.c services.c planes.c \
          imm_host.c $(IMC_CFILES) colorize.c 

H_FILES = mud.h bet.h imc-config.h imc-mercbase.h imc-mercdefs.h imc.h \
          ice.h icec.h icec-mercbase.h

all:
	make smaug

smaug: $(O_FILES)
	rm -f smaug
	$(CC) $(L_FLAGS) $(USE_IMC) -o smaug $(O_FILES)
	chmod g+w smaug.exe
	chmod a+x smaug.exe
	chmod g+w $(O_FILES)

.c.o: mud.h
	$(CC) -c $(C_FLAGS) $(USE_IMC) $<

clean:
	rm -f *.o smaug *~
Australia Forum Administrator #1
I don't understand the missing RENAME, because at that line in the source (eg. act_wiz.c:4880) there is a reference to "rename" not "RENAME" - as C is case-sensitive.

About the only way that link error would happen is if you had something like this in mud.h:

#define rename RENAME

but there is no such thing.

Anyway, after changing the makefile, I suggest you delete the object files, as it doesn't know to recompile if you have only changed compiler options, eg. type:

rm *.o

#2
I tried deleting all the .o files and recompile. It didn't work because i had 'REG = -DREGEX' uncommented in the Makefile so I commented it and most of the .o files compiled correctly with a few 'else' errors. But then it stoped in the same place as before with the same problems and errors. I just don't know what to do.
I thought that I may have inadvertently copied one or more of the src files edited for the Borland compiler, so I replaced all the src files with the originals from the .tgz file, but it didn't help and I still can't compile. Anyone have any ideas? I'm all out.
One more thought: My machine currently runs Windows ME until I can get my brother to get over to my place to gimme a hand to install Debian Linux. As it turns out, Microsoft being the geniuses that they are decided to take 'Real Dos' mode out of WinME to shorten the load time by about 25 - 30 seconds, the fools. So, I had to manualy install 'Real Dos' mode so that I could run things such as Borland C++ Builder 5.5, a few older games and the like. I was thinking that maybe some problem with dos is messing up the compile.
Any thoughts?
Australia Forum Administrator #3
It is hard to say what has happened, especially when it works for me, although it sounds like you have a slightly different version of Cygwin.

Certainly, installing Linux will simplify things, because you are then compiling on the operating system it was originally written for.

You can set up a "dual-boot" PC, so you can boot into Windows (eg. to play games) and Linux for other things.
#4
Yah, I've already got BeOS (www.be.com) on my system. Anyway Curious isn't it that no mud has yet been ported to BeOS? Anyway, thanks for your help. I realy apreciate it.