At 3:14 PM +0200 11/7/02, Ebrahim Mayat wrote:
Hi

After recently updating my XFree86 installation to version 4.2.1.1 from
<http://cesnet.dl.sourceforge.net/sourceforge/xonx/XFree86_4.2.1.1.zip>   and installing OpenMotif v2.2.0 libraries also available as a clickable installer from <http://www.motifzone.net>
I tried compiling and linking the software package MOLMOL (available from
http://www.mol.biol.ethz.ch/wuthrich/software/molmol/  
which requires Motif libraries. The compilation went smoothly until the linkage step with the X libraries on my machine.

When linking with the X libraries, I get the following message:

Most of the following messages are harmless warnings. Reading them you can see that things are linking appropriately because the correct multiply defined symbol is used.

 -L/usr/X11R6/lib -L/usr/local/lib -lX11 -lXm -lXmu -lXt -lXp -lXpm -lX11 -lXext -lSM -lICE
/usr/bin/ld: warning multiple definitions of symbol _XauDisposeAuth
/usr/X11R6/lib/libX11.dylib(AuDispose.o) definition of _XauDisposeAuth
/usr/X11R6/lib/libXp.dylib(AuDispose.o) definition of _XauDisposeAuth
/usr/bin/ld: warning multiple definitions of symbol _XauReadAuth
/usr/X11R6/lib/libXp.dylib(AuRead.o) definition of _XauReadAuth
/usr/X11R6/lib/libX11.dylib(AuRead.o) definition of _XauReadAuth
/usr/bin/ld: warning suggest use of -bind_at_load, as lazy binding may result in errors or different symbols being used
symbol _XauReadAuth used from dynamic library /usr/X11R6/lib/libXp.dylib(AuRead.o) not from earlier dynamic library /usr/X11R6/lib/libX11.6.dylib(AuRead.o)
/usr/bin/ld: Undefined symbols:
_nl_langinfo

This is the problem. I have don't know where this symbol supposed to be defined, but without it you are sunk.

/usr/bin/ld: warning unused multiple definitions of symbol _vendorShellWidgetClass
/usr/local/lib/libXm.dylib(VendorS.lo) definition of _vendorShellWidgetClass
/usr/X11R6/lib/libXt.dylib(Vendor.o) unused definition of _vendorShellWidgetClass
/usr/bin/ld: warning unused multiple definitions of symbol _vendorShellClassRec
/usr/local/lib/libXm.dylib(VendorS.lo) definition of _vendorShellClassRec
/usr/X11R6/lib/libXt.dylib(Vendor.o) unused definition of _vendorShellClassRec

This is all good. You want to be using the libXm definition instead of libXt.

make[4]: *** [molmol] Error 1
make[3]: *** [main] Error 2
make[2]: *** [default] Error 2
make[1]: *** [src] Error 2
make: *** [default] Error 2

The diagnostic messages indicate that there is a case of conflicting or at least incompatible headers between Motif(Xm) and X11(Xt). I got this reaction from a colleague on the MolMol discussion list which I thought brought up an important point:
 On Wednesday, November 6, 2002, at 09:10  PM, Benjamin Goldsteen wrote:
I just caught the original part of the message I responded to earlier.  If I
understand the issue, the XFree86 people did some things in the 4.2.1 release
that made things difficult for the OpenMotif people.  Nonetheless, this could
be worked around with the '-force-flat-name-space' option during Motif
application linking.  However, the XFree86 people "fixed things" for the
4.2.1.1 release.  This will probably make people's life easier in the future,
but also means that you probably need a new OpenMotif that was linked against
the XFree86 4.2.1.1 release.

Your colleague is almost right. He should say, "the XFree86 people did some things in the 4.2.0 release the made things difficult for the OpenMotif people." We did fix things with 4.2.0.1, however I don't see why you would need a new OpenMotif. The fix allows you the option of not specifying -force_flat_namespace, but it will work correctly either way.

Consensus regarding related elements of code between complementary teams of developers would indeed be important to avoid similar problems in the future.

Unfortunately very few people tried the 4.2.0 libraries before they were released although the X server (XDarwin) itself was widely tested. The few people who tried the libraries either did not use Motif (the XonX team) or did not realize in time what the problem was.

--Torrey