Ethereal-users: Re: [ethereal-users] Make fails with undefined reference to `gzgets'.
> Trying to build on 2.2.17 and Mandrake 7.1, after typing "make" I get
> the following error.
>
> wiretap/libwiretap.a(toshiba.o): In function `toshiba_check_file_type':
> /usr/src/ethereal-0.8.12/wiretap/toshiba.c:153: undefined reference to `gzgets'
If you installed XFree86 from source, and it's installed in
"/usr/local/X11R6", remove "/usr/local/X11R6/lib/libz.a" and try again.
The problem is that many Linux distributions come with libz; when
building X11, if you don't set up the appropriate configuration file in
the "xc/config/cf" directory of the X11 source (whether it's from x.org
or XFree86) to do
#ifndef HasZlib
#define HasZlib YES
#endif
to specify that the OS you're building it on comes with libz, it'll
build and install its own copy of libz in the directory in which it
installs various X libraries.
This means that Ethereal, as it's linked with the X libraries, picks up
that version of libz, which is an old and crufty version that lacks the
"gzgets()".
Ethereal's configure script checks for "gzgets()" in libz and, if it
doesn't find it, configures Ethereal not to use libz - and thus not to
support reading gzipped files.
The test apparently doesn't link with the same options that Ethereal
uses, so it *doesn't* find the crufty old libz installed by X, and thus
enables support for reading gzipped files.
Arguably, this is a Good Thing, at least for users who would like to
be able to read gzipped files in Ethereal, as it indicates that their
system needs to be repaired to get rid of the extra bogus libz; once
that's done, they should be able to build versions of Ethereal that use
libz and thus can read gzipped files.