When I'm trying to set up my eggdrop version 1.6.18, the first two steps ('./configure', 'make config') go fine. However when I then type 'make' I get this:
[3:35] koopa ~/eggdrop1.6.18 % make
This may take a while. Go get some runts.
cc -g -I.. -I.. -DHAVE_CONFIG_H -c bg.c
cc -g -I.. -I.. -DHAVE_CONFIG_H -c botcmd.c
cc -g -I.. -I.. -DHAVE_CONFIG_H -c botmsg.c
cc -g -I.. -I.. -DHAVE_CONFIG_H -c botnet.c
cc -g -I.. -I.. -DHAVE_CONFIG_H -c chanprog.c
cc -g -I.. -I.. -DHAVE_CONFIG_H -c cmds.c
cc -g -I.. -I.. -DHAVE_CONFIG_H -c dcc.c
cc -g -I.. -I.. -DHAVE_CONFIG_H -c dccutil.c
cc -g -I.. -I.. -DHAVE_CONFIG_H -c dns.c
cc -g -I.. -I.. -DHAVE_CONFIG_H -c flags.c
cc -g -I.. -I.. -DHAVE_CONFIG_H -c language.c
cc -g -I.. -I.. -DHAVE_CONFIG_H -c match.c
cc -g -I.. -I.. -DHAVE_CONFIG_H \
'-DCCFLAGS="cc -g -I.. -I.. -DHAVE_CONFIG_H "' \
'-DLDFLAGS="cc"' \
'-DSTRIPFLAGS="touch"' -c ./main.c
"./main.c", line 1104: warning: static function called but not defined: garbage_collect_tclhash()
cc -g -I.. -I.. -DHAVE_CONFIG_H -c mem.c
cc -g -I.. -I.. -DHAVE_CONFIG_H -c misc.c
cc -g -I.. -I.. -DHAVE_CONFIG_H -c misc_file.c
cc -g -I.. -I.. -DHAVE_CONFIG_H -c modules.c
"modules.c", line 1088: warning: assignment type mismatch:
pointer to function(int, pointer to char, int) returning void "=" pointer to function() returning void
"modules.c", line 1096: warning: assignment type mismatch:
pointer to function(pointer to struct userrec {pointer to struct userrec {..} next, array[10] of char handle, unsigned long flags, unsigned long flags_udef, pointer to struct chanuserrec {..} chanrec, pointer to struct user_entry {..} entries}, pointer to char) returning int "=" pointer to function() returning int
"modules.c", line 1155: warning: static function called but not defined: open_listen()
cc -g -I.. -I.. -DHAVE_CONFIG_H -c net.c
cc -g -I.. -I.. -DHAVE_CONFIG_H -c rfc1459.c
cc -g -I.. -I.. -DHAVE_CONFIG_H -c tcl.c
"tcl.c", line 741: warning: assignment type mismatch:
pointer to char "=" pointer to const char
cc -g -I.. -I.. -DHAVE_CONFIG_H -c tcldcc.c
"tcldcc.c", line 1161: warning: static function called but not defined: open_listen()
cc -g -I.. -I.. -DHAVE_CONFIG_H -c tclhash.c
cc -g -I.. -I.. -DHAVE_CONFIG_H -c tclmisc.c
"tclmisc.c", line 688: warning: assignment type mismatch:
pointer to char "=" pointer to unsigned char
cc -g -I.. -I.. -DHAVE_CONFIG_H -c tcluser.c
cc -g -I.. -I.. -DHAVE_CONFIG_H -c userent.c
cc -g -I.. -I.. -DHAVE_CONFIG_H -c userrec.c
cc -g -I.. -I.. -DHAVE_CONFIG_H -c users.c
cc -g -I. -I../.. -I../.. -I../../src -DHAVE_CONFIG_H -c md5c.c
cc -g -I../.. -I../.. -I../../src -DHAVE_CONFIG_H -c inet_aton.c
cc -g -I../.. -I../.. -I../../src -DHAVE_CONFIG_H -c snprintf.c
cc -g -I../.. -I../.. -I../../src -DHAVE_CONFIG_H -c memset.c
cc -g -I../.. -I../.. -I../../src -DHAVE_CONFIG_H -c memcpy.c
cc -g -I../.. -I../.. -I../../src -DHAVE_CONFIG_H -c strcasecmp.c
cc -g -I../.. -I../.. -I../../src -DHAVE_CONFIG_H -c strftime.c
---------- Yeah! That's the compiling, now the linking! ----------
Linking eggdrop (standard build).
cc -o ../eggdrop bg.o botcmd.o botmsg.o botnet.o chanprog.o cmds.o dcc.o dccutil.o dns.o flags.o language.o match.o main.o mem.o misc.o misc_file.o modules.o net.o rfc1459.o tcl.o tcldcc.o tclhash.o tclmisc.o tcluser.o userent.o userrec.o users.o -L/opt/tcl/lib -ltcl -lm -ldl -lnsl -lsocket md5/md5c.o compat/*.o `cat mod/mod.xlibs`
Undefined first referenced
symbol in file
open_listen modules.o
garbage_collect_tclhash main.o
expmem_mask userrec.o
ld: fatal: Symbol referencing errors. No output written to ../eggdrop
*** Error code 1
make: Fatal error: Command failed for target `../eggdrop'
Current working directory /home/k/l/klindste/eggdrop1.6.18/src
*** Error code 1
The following command caused the error:
cd src && make 'MAKE=make' 'CC=cc' 'LD=cc' 'STRIP=touch' 'RANLIB=ranlib' 'CFLGS=' 'TCLLIB=/opt/tcl/lib' 'TCLLIBFN=tcl.so' 'XREQS=/opt/tcl/lib/libtcl.so' 'XLIBS=-L/opt/tcl/lib -ltcl -lm -ldl -lnsl -lsocket' 'EGGEXEC=eggdrop' 'EGGBUILD=(standard build)' 'MODOBJS=' eggdrop
make: Fatal error: Command failed for target `modegg'
Any ideas?
Last edited by jsl on Thu Nov 02, 2006 2:01 am, edited 1 time in total.
rosc2112 wrote:What options did you use for configure and what platform is this on?
Umm... The default options I guess, just ./configure and 'make config'.
About the platform, it's my ISP's unix server... I'm don't know more details... Does this answer to your question: "Sun Microsystems Inc. SunOS 5.10 Generic January 2005"
And are you using the source archive from eggheads.org?
Yes.
Ohh I also noticed this:
[3:35] koopa ~/eggdrop1.6.18 % make
Current working directory /home/k/l/klindste/eggdrop1.6.17/src
Do you have 2 different copies of the src?
Ignore that... I first copy-pasted that error report from 1.6.17, then I tried with 1.6.18 and got exact the same thing so I just edited 1.6.17 -> 1.6.18 to the copy-paste...
Alchera wrote:Refer to the COMPILE-GUIDE in ~/eggdrop1.6.18/doc regarding compiling eggdrop on SunOS.
All it says is:
G. Solaris / SunOS
Follow the standard compile process in Section A. To compile dynamically
(with module support), use 'make eggdrop' instead of 'make'.
Note that on Solaris / SunOS, the LD_LIBRARY_PATH_32 and LD_LIBRARY_PATH_64
environment variables may need to be set instead of (or in addition to, to
be safe) LD_LIBRARY_PATH.
and:
8. Undefined references in net.o (SunOS)
First
Undefined Referenced
Symbol In file
socket net.o
gethostbyname net.o
accept net.o
bind net.o
setsockopt net.o
gethostbyaddr net.o
getsockname net.o
gethostname net.o
listen net.o
connect net.o
ld: fatal: Symbol referencing errors. No output written to eggdrop
This seems to be caused by a few libraries not being detected by the
auto-configure script; it is relatively easy to fix. Edit your Makefile.
Note that yours may be slightly different than this one when it comes to
the Tcl library, but here is the way it probably is:
Try adding -DMAKING_MODS to the CFLAGS environment variable, eg:
CFLAGS="$CFLAGS -DMAKING_MODS" ; ./configure
Beyond that, I dunno what to suggest, I'm not that familiar with SunOS (although I've heard a lot of complaints about its compiler not working well with GNU software.. Might be worth the bother to install GNU's development tools, gcc, gnu-make, libtool, autoconf, etc, if they are not installed already.)
What could cause that? It still continues the procedure and even finishes it "succesfully", but could that have something to do with the problems I get with 'make'?
Yes, that could be why your configure is not setting the right options, and the reason it's doing that is likely because your shell provider has such a restrictive quota.
Personally, I'd be looking for another shell provider.
Undefined first referenced symbol in file open_listen modules.o
That is the essence of the problem, which means that proto.h file is not being included. The brute force method to get it included would be to edit the .c files and stick an #include "proto.h" line into the files that require it (eg, modules.c and then each other .c file that produces an error at the linking, you'll know which ones when you see errors naming the corresponding .o file; in other words since modules.o was named the corresponding .c file is modules.c)
A quick grep of the source shows the open_listen symbol named in these files:
modules.c
net.c
tcldcc.c
It may also be called in some of the files in the mods/ subdirs, I did not look at those.
Also, before recompiling, make sure you're doing a 'make clean' first to get rid of the old .o files that still have the errors.
Other suggestions: Ask your shell provider to compile the binary and make it available system-wide. Or, find another SunOS user with the same platform to compile it and give you a copy. Or, find someone with the resources for cross-compiling to make a binary for you. Last resort, find a better shell (not a fan of Sun personally.. =)