(Fwd) Re: NCSA Mosaic 2.4 and Solaris x86

Tim Evans (tkevans@eplrx7.es.duPont.com)
Thu, 14 Apr 1994 13:47:39 -0400

Yesterday, I posted to these e-mail addresses a question about NCSA Mosaic 2.4
and x86 Solaris 2.1 related to an undefined symbol at final link time. The
message below from Guy Harris (thanks, again, Guy) explains the situation in
very clear terms, so rather than trying to paraphrase and summarize, I'm just
forwarding it. I was able to successfully build version 2.4 by explicitly
linking to the X11R5 libXmu rather than to the OpenWindows libXmu.
--- Forwarded mail from guy@netapp.com (Guy Harris)

To: tkevans@eplrx7.es.duPont.com

>Undefined first referenced
> symbol in file
> _XEditResCheckMessages gui.o

The "editres" stuff was added in X11R5.

The X11R4 "-lXmu" doesn't have "_XEditResCheckMessages"; it first showed
up in X11R5.

Now, the way "gui.c" figures out whether to use the "editres" stuff is
that it looks at "XtSpecificationRelease" and, if it's greater than 4,
it uses it.

I'd *expect* that to cause it *not* to try to use the "editres" stuff
in an X11R4-based system, so either:

1) the OpenWindows component of the Solaris 2.x system in
question is X11R4 based, you've dropped X11R5 onto your
Solaris 2.x system, but you are, when building Mosaic, a
mixed bag of Openwindows 3.x and X11R5 stuff (e.g., you're
using header files from X11R5, so that "gui.c" is built with
"editres" support, but are using libraries from OpenWindows,
so that "-lXmu" doesn't have "_XEditResCheckMessages()");

2) you're building entirely with the OpenWindows X11 stuff, but
the OpenWindows component of the Solaris 2.x system in
question is botched, so that its header file says it's X11R5,
and "gui.c" thus uses the "editres" stuff, but its "-lXmu"
lacks the "editres" stuff;

3) something else.

If the answer is 1), try building *entirely* with the X11R5 stuff; that
means you need to make sure it's linking with the X11R5 "-lXmu", not
with the OpenWindows one.

If the answer is 2), then:

1) complain to Sun;

2) let the NCSA people supporting Mosaic know about this

3) try tweaking "src/gui.c" so that, at least under the version
of Solaris 2.x you're using, it doesn't define
EDITRES_SUPPORT (dunno how to identify that version; the
broadbrush technique they used to work around a similar bug
with HP-UX probably isn't appropriate, as other Solaris 2.x
versions may not have that problem, and even versions that do
may not have it if you use the MIT X11R5 libraries - the
broadbrush technique isn't even appropriate for HP-UX, for
that reason...).

If the answer is 3), you're on your own.

(The reason this worked with older Mosaics is that they had a bug wherein
they were checking "XtSpecificationRlease" or some misspelled variable
name such as that, and thus never tried using the "editres" stuff.)

--- End of forwarded mail from guy@netapp.com (Guy Harris)