Subj : libjs.a Linux compatiblity To : netscape.public.mozilla.jseng From : "Rob Swindell" Date : Tue Jul 08 2003 07:12 am I have a large open source project (http://synchro.net), and distribute the source code along with pre-built libraries for JavaScript and NSPR for the various supported Unixes (Linux, FreeBSD, OpenBSD, NetBSD, and QNX) as well as DLLs for a Win32 build. This saves a lot of time and hassle for the users of my project (I don't release any pre-built executable binaries for Unix at this time). Shortly after the appearance of RedHat Linux 9 I started getting reports of linking errors with the libjs.a and libnspr4.a (undefined reference: '__ctype_b'). Apparently an install from the boxed RH9 CDs installs glibc-2.3.2-5 which will link fine, but a downloaded install or an updated install (with "up2date") uses glibc-2.3.2-11 or 2.3.2-27 which does not include this symbol and the link fails. Likewise, libraries built using this newer glibc don't link on older systems (undefined reference: '__ctype_b_loc'). There are plenty of discussions on this subject on the web and lots of work-arounds (including patching glibc or using older revisions), but I'm interested in a permanent solution, not a temporary work-around. Both RedHat and the GNU guys claim this is not a bug, even though these libraries link with every other Linux distro and version released in the past 3 years. The response from GNU was: "Compatibility does not extend to object files, only programs and DSOs. Recompile your code." If by "DSO", he means a shared object (libjs.so) file, I've tried that too with no success. I've asked for clarification with no response. The response for RedHat was: "On RHL9 this is not a bug. There is no binary compatibility for .a libraries or .o files between distribution major releases (glibc only ensures binary compatibility for programs and shared libraries using symbol versioning, for static libraries this cannot work)."Does the libjs.so file built with Makefile.ref use "symbol versioning"? If not, how is this done? I realize this isn't a Spidermonkey-specific problem, but I've just about run out of ideas and resources on solving this ridiculous incompatibility and have been frustrated with the responses I've received from RedHat and GNU. Many thanks for any helpful input, -Rob .