Ethereal-users: [Ethereal-users] Problem building static version of Ethereal-0.8.12
I 'cd' to my ethereal source directory, then do 'make clean,' then
'./configure --prefix=$HOME,' which ran to completion with no errors,
then 'make ethereral_static.' (For now I have the libpcap, libgtk+ and
libg libraries in my personal directory, which is why I type
'--prefix=$HOME' to configure.) Compile happens with no apparent
problem, but at link time I get lots of undefined references to
'_IO_stderr' and a few also to '_IO_stdin" and _IO_stdout.' The sources
of these messages are mostly C library 'fprintf' calls referencing
'stderr,' or 'stdout.'. Using the 'nm' program I learn that These are
defined in /usr/libc.a (in module stdfiles.o). (Could they also be
defined in some other library?) Why libc (or maybe another library with
proper definitions) is not getting scanned I do not know. I am trying
to uderstand how the Makefile works, but I'm finding it slow going. (A
few attempts to hip-shoot Makefile changes without really understanding
what is going on have failed.)
More: the dynamic version of ethereal-0.8.12 compiles and runs just
fine. My build process is as above except that I do just 'make' (or
sometimes 'make ethereal') instead of 'make ethereal_static.)
In the interest of full disclosure I will mention that I have added
some dissectors for some special packet types used internally in a
product here. These dissectors seem to work fine in the dynamic
version. The problem with ethereal_static seems totally unrelated to
the new dissectors.
Our environment here is Red Hat Linux release 5.2, kernal 2.0.36.
A related question: in the ethereal Makefile I see the definition,
ethereal_LDADD = \
$(ethereal_optional_objects) \
$(ethereal_additional-libs) \
\
"-dlopen" self \
"-dlopen" plugins /gryphon/gryphon.la -lpcap
-L/users/langbein/lib -L/users/Xll . . .(some other stuff)
What exactly is '"-dlopen" self?' For starters, which program reads it
and processes it? I can't seem to find that syntax as either a loader
command line option or a Make command. I'm obviously off in the weeds!
Any help will be appreciated. Thanks in advance.
Don Langbein