Date: Fri, 08 Feb 2002 02:13:21 -0800 From: Terry Lambert <tlambert2@mindspring.com> To: Maxim Sobolev <sobomax@FreeBSD.org> Cc: jdp@FreeBSD.org, deischen@FreeBSD.org, jasone@FreeBSD.org, hackers@FreeBSD.org, jlemon@FreeBSD.org Subject: Re: Linking libc before libc_r into application causes weird problems Message-ID: <3C63A4C1.7C2CEEDF@mindspring.com> References: <1013147180.73417.2.camel@notebook> <3C637097.13B8C35A@mindspring.com> <3C63973F.111CF6D1@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Maxim Sobolev wrote: [...] > > Symbols are resolved from libraries in the order in which > > they are specified to the linker. > > > > So the fix is obvious: specify them in the right order. [...] > All not as easy as it seems to be. -lc could come not from the command > line, but from one of the other libraries the binary being linked > with. Therefore, in real life resolving this problem could be a little > more tricky, especially with large applications (e.g. Evolution), that > uses code from 30+ shared libraries. I think that ld(1) should be > smart enough to reorder libc/libc_r so that libc_r is always linked > before libc. Excuse me. Even assuming it were possible to order libraries so that certain libraries were considered "weak" and others were considered "strong" by their symbol tagging alone, you can *not* fix this wherne there are two libraries, or a mutual precedence order issue. How in the heck does it get the Xll libraries linked in the correct -lXt -lXext -lX11 order, if not by specifying them in the correct order? It's really, really stupid to make an assumption about libc_r that you can't even make on Linux with regards to X11/Xext/Xt, just because some software had the misfortune to be born on the wrong side of the autoconf tracks. Code protability is an attribute of the code, not of the environment where the code is linked. You might as well assume that you are going to reorder the dependency graph for template virtual base clases to their dependency order instead of their link order for something like ACAP (ACAP didn't used to compile with g++ until Jeremy Allison and I hacked it into submission, and away from bad assumptions, like that one, or certain spacing of underscores in declarations). -- Terry To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3C63A4C1.7C2CEEDF>