Date: Thu, 16 Dec 1999 15:20:27 -0500 (EST) From: "Andrew Atrens" <atrens@nortelnetworks.com> To: emulation@freebsd.org, Marcel Moolenaar <marcel@scc.nl> Subject: Re: framemaker for linux Message-ID: <Pine.BSF.4.21.9912161444180.9074-100000@hcarp00g.ca.nortel.com> In-Reply-To: <38592C44.537140D8@scc.nl>
next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, 16 Dec 1999, Marcel Moolenaar wrote: > Date: Thu, 16 Dec 1999 19:15:32 +0100 > From: Marcel Moolenaar <marcel@scc.nl> > To: "Atrens, Andrew (A.B.) [EXCHANGE:SKY:1U33]" > <atrens@americasm01.nt.com> > Newsgroups: list.freebsd.emulation > Subject: Re: framemaker for linux > > [moved to -emulation] > > Andrew Atrens wrote: > > > This might be a linux ABI question, or it might be an `ld.so' question, > > so arguably I could have sent this to emulation, questions or since I run > > -current, current, or perhaps hackers, at any rate here goes - > > -emulation, definitely. > > > I've got `framemaker for linux' and am getting - > > > > # maker5X.exe > > maker5X.exe: error in loading shared libraries > > : undefined symbol: __register_frame_info > [truss output snipped] > > I'm probably missing something obvious. Any help y'all can provide would > > be greatly appreciated! > > make sure you've got the right set of libraries. Probably glibc2.1; > maybe glibc2... Okay so the problem is not glibc per se, it's the following - From the glibc FAQ - 2.8. When I run an executable on one system which I compiled on another, I get dynamic linker errors. Both systems have the same version of glibc installed. What's wrong? {ZW} Glibc on one of these systems was compiled with gcc 2.7 or 2.8, the other with egcs (any version). Egcs has functions in its internal `libgcc.a' to support exception handling with C++. They are linked into any program or dynamic library compiled with egcs, whether it needs them or not. Dynamic libraries then turn around and export those functions again unless special steps are taken to prevent them. When you link your program, it resolves its references to the exception functions to the ones exported accidentally by libc.so. That works fine as long as libc has those functions. On the other system, libc doesn't have those functions because it was compiled by gcc 2.8, and you get undefined symbol errors. The symbols in question are named things like `__register_frame_info'. So it looks like the linux port glibc stuff must have been compiled with 2.8 (or older) and the framemaker stuff uses glibc compiled by egcs. Andrew -- +-- | Andrew Atrens Nortel Networks, Ottawa, Canada. | | All opinions expressed are my own, not those of any employer. | --+ Heller's Law: The first myth of management is that it exists. Johnson's Corollary: Nobody really knows what is going on anywhere within the organization. To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-emulation" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.21.9912161444180.9074-100000>