2

今天来寻求帮助,经过长时间的搜索,在整个网络上,没有找到解决方案......

我尝试为 Windows 编译一个 1.6.21 版本的 eggdrop。

我正在使用 cygwin 和 tcl 8.5.11 的最新版本,然后我按照http://windrop.sourceforge.net/compile16.html上提供的说明进行操作。(我尝试使用和不使用 eggdrop1.6.21.patch 进行编译

C 语言对我来说显示为 cypted (hihi),所以如果有人得到解决方案,他将是最好的!

有日志......(注意我分割了最后一个日志的一部分,因为它太大了!!)

admin@TCLserver /
$ tar -zxf tcl-8.5.11.tar.gz

admin@TCLserver /
$ cd /home/admin

admin@TCLserver ~
$ tar -zxf eggdrop1.6.21.tar.gz

admin@TCLserver ~
$ cp eggdrop1.6.21.patch eggdrop1.6.21

admin@TCLserver ~
$ cd eggdrop1.6.21

admin@TCLserver ~/eggdrop1.6.21
$ patch -p0 <  eggdrop1.6.21.patch
patching file src/main.c
Hunk #1 succeeded at 1094 (offset -20 lines).
Hunk #2 succeeded at 1116 (offset -20 lines).

--

admin@TCLserver ~/eggdrop1.6.21
$ ./configure --enable-strip --with-handlen=32 --with-tclinc='/usr/local/include/tcl.h' --with-tcllib='/usr/local/lib/libtcl8.5.dll'

This is Eggdrop's GNU configure script.
It's going to run a bunch of tests to hopefully make your compile
work without much twiddling.

checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.exe
checking for suffix of executables... .exe
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking minix/config.h usability... no
checking minix/config.h presence... no
checking for minix/config.h... no
checking whether it is safe to define __EXTENSIONS__... yes
checking for library containing strerror... none required
checking for icc... no
checking whether the compiler understands -pipe... yes
checking whether the compiler understands -Wall... yes
checking for a BSD-compatible install... /usr/bin/install -c
checking whether make sets $(MAKE)... yes
checking for ranlib... ranlib
checking whether ln -s works... yes
checking whether head -n 1 works... yes
checking for strip... strip
checking for gawk... gawk
checking for basename... basename
checking for uname... uname

configure: WARNING:

  Stripping the executable, while saving some disk space, will make bug
  reports nearly worthless. If Eggdrop crashes and you wish to report
  a bug, you will need to recompile with stripping disabled.

checking for socket in -lsocket... no
checking for connect in -lnsl... no
checking for gethostbyname in -ldns... no
checking for dlopen in -ldl... yes
checking for tan in -lm... yes
checking for pthread_mutex_init in -lpthread... yes
checking build system type... i686-pc-cygwin
checking host system type... i686-pc-cygwin
checking target system type... i686-pc-cygwin
checking system type... CYGWIN_NT-5.2
checking system release... 1.7.17(0.262/5/3)
checking module loading capabilities...
checking dl.h usability... no
checking dl.h presence... no
checking for dl.h... no
checking dlfcn.h usability... yes
checking dlfcn.h presence... yes
checking for dlfcn.h... yes
checking loader.h usability... no
checking loader.h presence... no
checking for loader.h... no
checking rld.h usability... no
checking rld.h presence... no
checking for rld.h... no
checking mach-o/dyld.h usability... no
checking mach-o/dyld.h presence... no
checking for mach-o/dyld.h... no
checking mach-o/rld.h usability... no
checking mach-o/rld.h presence... no
checking for mach-o/rld.h... no
checking for dlopen... yes
checking for load... no
checking for NSLinkModule... no
checking for shl_load... no
checking for rld_load... no
checking for /usr/lib/binmode.o... yes
checking for dirent.h that defines DIR... yes
checking for library containing opendir... none required
checking whether time.h and sys/time.h may both be included... yes
checking arpa/inet.h usability... yes
checking arpa/inet.h presence... yes
checking for arpa/inet.h... yes
checking fcntl.h usability... yes
checking fcntl.h presence... yes
checking for fcntl.h... yes
checking limits.h usability... yes
checking limits.h presence... yes
checking for limits.h... yes
checking locale.h usability... yes
checking locale.h presence... yes
checking for locale.h... yes
checking netdb.h usability... yes
checking netdb.h presence... yes
checking for netdb.h... yes
checking netinet/in.h usability... yes
checking netinet/in.h presence... yes
checking for netinet/in.h... yes
checking stdio.h usability... yes
checking stdio.h presence... yes
checking for stdio.h... yes
checking stdarg.h usability... yes
checking stdarg.h presence... yes
checking for stdarg.h... yes
checking stddef.h usability... yes
checking stddef.h presence... yes
checking for stddef.h... yes
checking sys/file.h usability... yes
checking sys/file.h presence... yes
checking for sys/file.h... yes
checking sys/param.h usability... yes
checking sys/param.h presence... yes
checking for sys/param.h... yes
checking sys/rusage.h usability... no
checking sys/rusage.h presence... no
checking for sys/rusage.h... no
checking sys/select.h usability... yes
checking sys/select.h presence... yes
checking for sys/select.h... yes
checking sys/socket.h usability... yes
checking sys/socket.h presence... yes
checking for sys/socket.h... yes
checking sys/time.h usability... yes
checking sys/time.h presence... yes
checking for sys/time.h... yes
checking for unistd.h... (cached) yes
checking wchar.h usability... yes
checking wchar.h presence... yes
checking for wchar.h... yes
checking for an ANSI C-conforming const... yes
checking whether byte ordering is bigendian... no
checking for inline... inline
checking for intptr_t... yes
checking for pid_t... yes
checking for size_t... yes
checking whether struct tm is in sys/time.h or time.h... time.h
checking for struct tm.tm_zone... no
checking whether tzname is declared... yes
checking for tzname... yes
checking for working volatile... yes
checking for socklen_t... yes
checking size of long... 4
checking size of int... 4
checking size of short... 2
checking for clock... yes
checking for dprintf... yes
checking for fsync... yes
checking for getdtablesize... yes
checking for getrusage... yes
checking for inet_aton... yes
checking for isascii... yes
checking for mbrlen... yes
checking for memcpy... yes
checking for memset... yes
checking for random... yes
checking for rand... yes
checking for lrand48... yes
checking for rename... yes
checking for setpgid... yes
checking for sigaction... yes
checking for sigemptyset... yes
checking for snprintf... yes
checking for strcasecmp... yes
checking for strncasecmp... yes
checking for strdup... yes
checking for uname... yes
checking for vsnprintf... yes
checking for sys/select.h... (cached) yes
checking for sys/socket.h... (cached) yes
checking types of arguments for select... int,fd_set *,struct timeval *
checking for vprintf... yes
checking for _doprnt... no
checking for strftime... yes
checking for stdlib.h... (cached) yes
checking for unistd.h... (cached) yes
checking for sys/param.h... (cached) yes
checking for getpagesize... yes
checking for working mmap... yes
checking for Tcl library... using /usr/local/lib/libtcl8.5.dll
checking for Tcl header... using /usr/local/include/tcl.h
checking whether the Tcl system has changed... yes
checking for Tcl version... 8.5
checking for Tcl patch level... 8.5.11
checking for Tcl_Free in -ltcl8.5... yes
checking for Tcl_GetCurrentThread in -ltcl8.5... yes
checking for Tcl_GetThreadData in -ltcl8.5... yes
checking for Tcl_SetNotifier in -ltcl8.5... yes
checking for Tcl_NotifierProcs.initNotifierProc... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating doc/Makefile
config.status: creating scripts/Makefile
config.status: creating src/Makefile
config.status: creating src/compat/Makefile
config.status: creating src/md5/Makefile
config.status: creating src/mod/Makefile
config.status: creating config.h
config.status: executing replace-if-changed commands
creating lush.h
config.status: executing catch-make-rebuild commands

Operating System: CYGWIN_NT-5.2 1.7.17(0.262/5/3)

If you experience any problems compiling Eggdrop, please read the
compile guide, found in doc/COMPILE-GUIDE.

Type 'make config' to configure the modules, or type 'make iconfig'
to interactively choose which modules to compile.

--

admin@TCLserver ~/eggdrop1.6.21
$ make config
Detecting modules.................... done.
Calculating dependencies................... done.
Building ./src/mod/Makefile... done.
make[1]: Entering directory `/home/admin/eggdrop1.6.21/src/mod'

Configuring module 'compress'.
configure: creating cache ../../../config.cache
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.exe
checking for suffix of executables... .exe
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for gzopen in -lz... yes
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking zlib.h usability... yes
checking zlib.h presence... yes
checking for zlib.h... yes
configure: updating cache ../../../config.cache
configure: creating ./config.status
config.status: creating Makefile

Configuring module 'dns'.
configure: loading cache ../../../config.cache
checking for gcc... (cached) gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.exe
checking for suffix of executables... .exe
checking whether we are cross compiling... no
checking for suffix of object files... (cached) o
checking whether we are using the GNU C compiler... (cached) yes
checking whether gcc accepts -g... (cached) yes
checking for gcc option to accept ISO C89... (cached) none needed
checking for sys/types.h... (cached) yes
checking for netinet/in.h... yes
checking for arpa/nameser.h... yes
checking for netdb.h... yes
checking for resolv.h... yes
checking for a working resolver library... yes ()
configure: updating cache ../../../config.cache
configure: creating ./config.status
config.status: creating Makefile

make[1]: Leaving directory `/home/admin/eggdrop1.6.21/src/mod'
Building ./src/mod/Makefile... done.

You can now compile the bot, using "make".

--

admin@TCLserver ~/eggdrop1.6.21
$ make eggdrop
make[1]: Entering directory `/home/admin/eggdrop1.6.21/src'

This may take a while. Go get some runts.

gcc -g -O2 -pipe -Wall -I.. -I.. -DHAVE_CONFIG_H   -c bg.c
gcc -g -O2 -pipe -Wall -I.. -I.. -DHAVE_CONFIG_H   -c botcmd.c
gcc -g -O2 -pipe -Wall -I.. -I.. -DHAVE_CONFIG_H   -c botmsg.c
gcc -g -O2 -pipe -Wall -I.. -I.. -DHAVE_CONFIG_H   -c botnet.c
gcc -g -O2 -pipe -Wall -I.. -I.. -DHAVE_CONFIG_H   -c chanprog.c
gcc -g -O2 -pipe -Wall -I.. -I.. -DHAVE_CONFIG_H   -c cmds.c
gcc -g -O2 -pipe -Wall -I.. -I.. -DHAVE_CONFIG_H   -c dcc.c
gcc -g -O2 -pipe -Wall -I.. -I.. -DHAVE_CONFIG_H   -c dccutil.c
gcc -g -O2 -pipe -Wall -I.. -I.. -DHAVE_CONFIG_H   -c dns.c
gcc -g -O2 -pipe -Wall -I.. -I.. -DHAVE_CONFIG_H   -c flags.c
gcc -g -O2 -pipe -Wall -I.. -I.. -DHAVE_CONFIG_H   -c language.c
gcc -g -O2 -pipe -Wall -I.. -I.. -DHAVE_CONFIG_H   -c match.c
gcc -g -O2 -pipe -Wall -I.. -I.. -DHAVE_CONFIG_H   \
'-DCCFLAGS="gcc -g -O2 -pipe -Wall -I.. -I.. -DHAVE_CONFIG_H  "' \
'-DLDFLAGS="gcc"' \
'-DSTRIPFLAGS="strip"' -c ./main.c
In file included from /usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/windef.h:139,
                 from /usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/windows.h:69,
                 from ./main.c:68:
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/winnt.h:207: error: parse error before '*' token
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/winnt.h:208: error: parse error before '*' token
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/winnt.h:209: error: parse error before '*' token
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/winnt.h:210: error: parse error before '*' token
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/winnt.h:211: error: parse error before '*' token
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/winnt.h:212: error: parse error before '*' token
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/winnt.h:213: error: parse error before '*' token
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/winnt.h:236: error: parse error before "LPTCH"
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/winnt.h:237: error: parse error before "PTSTR"
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/winnt.h:238: error: parse error before "PCTSTR"
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/winnt.h:244: error: parse error before '*' token
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/winnt.h:245: error: parse error before '*' token
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/winnt.h:257: error: parse error before "HRESULT"
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/winnt.h:326: error: parse error before "LONG"
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/winnt.h:330: error: parse error before "LONG"
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/winnt.h:333: error: parse error before '}' token
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/winnt.h:335: error: parse error before '*' token
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/winnt.h:353: error: parse error before "LONG"
In file included from /usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/windef.h:139,
                 from /usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/windows.h:69,
                 from ./main.c:68:
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/winnt.h:1811: error: parse error before '*' token
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/winnt.h:1812: error: parse error before '*' token
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/winnt.h:1814: error: parse error before '*' token
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/winnt.h: In function `_interlockedbittestandset':
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/winnt.h:1817: error: `Base' undeclared (first use in this function)
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/winnt.h:1817: error: (Each undeclared identifier is reported only once
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/winnt.h:1817: error: for each function it appears in.)
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/winnt.h:1818: error: `Bit' undeclared (first use in this function)
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/winnt.h: At top level:
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/winnt.h:1822: error: parse error before '*' token
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/winnt.h: In function `_interlockedbittestandreset':
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/winnt.h:1825: error: `Base' undeclared (first use in this function)
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/winnt.h:1826: error: `Bit' undeclared (first use in this function)
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/winnt.h: At top level:
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/winnt.h:1831: error: parse error before '*' token
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/winnt.h:1833: error: parse error before '*' token
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/winnt.h: In function `InterlockedBitTestAndComplement':
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/winnt.h:1836: error: `Base' undeclared (first use in this function)
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/winnt.h:1837: error: `Bit' undeclared (first use in this function)
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/winnt.h: In function `MemoryBarrier':
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/winnt.h:1883: error: `LONG' undeclared (first use in this function)
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/winnt.h:1883: error: parse error before "Barrier"
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/winnt.h:1885: error: `Barrier' undeclared (first use in this function)
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/winnt.h: At top level:
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/winnt.h:1984: error: parse error before "InterlockedIncrement"
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/winnt.h:1985: error: parse error before "InterlockedDecrement"
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/winnt.h:1986: error: parse error before "InterlockedExchange"
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/winnt.h:1989: error: parse error before "InterlockedIncrement"
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/winnt.h:1997: error: parse error before "InterlockedDecrement"
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/winnt.h:2005: error: parse error before "InterlockedExchange"
In file included from /usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/windef.h:139,
                 from /usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/windows.h:69,
                 from ./main.c:68:
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/winnt.h:2521: error: parse error before "LUID"
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/winnt.h:2523: error: parse error before '}' token
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/winnt.h:2524: error: parse error before "LUID_AND_ATTRIBUTES_ARRAY"
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/winnt.h:2525: error: parse error before '*' token
In file included from /usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/windef.h:139,
                 from /usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/windows.h:69,
                 from ./main.c:68:
...
...
...
... a lot of error lines ....
...
...
...
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/imm.h:217: error: parse error before "LPCSTR"
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/imm.h:219: error: parse error before "LPSTYLEBUFA"
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/imm.h:221: error: parse error before "LPCSTR"
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/imm.h:225: error: parse error before "LPIMEMENUITEMINFOA"
./main.c:695: warning: 'patch' defined but not used
{standard input}: Assembler messages:
{standard input}:4963: Warning: size of "_cStreamName" is already 16; not changing to 592
{standard input}:5705: Warning: size of "_szTip" is already 512; not changing to 256
{standard input}:5706: Warning: size of "_szInfo" is already 1024; not changing to 512
{standard input}:5707: Warning: size of "_szInfoTitle" is already 256; not changing to 128
{standard input}:6815: Warning: size of "_dwReserved" is already 32; not changing to 16
Makefile:60: recipe for target `main.o' failed
make[1]: *** [main.o] Error 1
make[1]: Leaving directory `/home/admin/eggdrop1.6.21/src'
Makefile:202: recipe for target `modegg' failed
make: *** [modegg] Error 2 
4

1 回答 1

0

我今天在使用 Windrop 1.8 和 1.6.21 时遇到了同样的错误,但@Kirben在 IRC 上提供了解决方案。

<@Kirben> 现在只需从 src/main.c 中删除 Cygwin Hack 部分即可解决此问题,该问题是由 Cygwin 切换到使用不同的 win32api 包引起的。

<@Kirben> 只是“#ifdef CYGWIN_HACKS”部分。

多亏了他,我现在可以运行我的改装 Windrop 1.8。

于 2013-03-01T01:40:14.223 回答