Date: Fri, 19 Aug 2005 22:47:48 +0300 From: Giorgos Keramidas <keramida@ceid.upatras.gr> To: Jonathon McKitrick <jcm@FreeBSD-uk.eu.org> Cc: freebsd-questions@freebsd.org Subject: Re: Forcing symbol resolution in lib rather than bin Message-ID: <20050819194748.GA7138@flame.pc> In-Reply-To: <20050819191335.GA76538@dogma.freebsd-uk.eu.org> References: <20050819191335.GA76538@dogma.freebsd-uk.eu.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On 2005-08-19 20:13, Jonathon McKitrick <jcm@FreeBSD-uk.eu.org> wrote: > > I have a binary that links to a shared object library. That .so calls a > routine in an archive library (.a). When I link the main app with -lar-a it > works fine, even though the function is actually called in the .so. But when > I link the .so with -lar-a, the linker doesn't resolve the symbol! > > So, here's the call graph: > > bin --> shared --> archive > > If I link bin to shared and archive, it works. But if I link shared to > archive, and then bin to shared, it doesn't, even though the shared object > calls the archived function, rather than bin. > > What basic link concept am I missing here? Strange. How are you building these libraries and the program? I've uploaded a minimal test at: http://people.freebsd.org/~keramida/files/jcm-lib.tar.gz This contains three parts: libfoo/ which defines libfoo_init() and builds as a non-shared libfoo.a libbar/ which defines libbar_init() and calls libfoo_init() foobar/ a program that links with libbar.so and calls only libbar_init() Here's the output of ldd on the foobar binary and the output of running the foobar program: # flame:/tmp/jcm-lib/foobar$ LD_LIBRARY_PATH=`pwd`/../libbar ldd foobar # foobar: # libbar.so.1 => /tmp/jcm-lib/foobar/../libbar/libbar.so.1 (0x80062a000) # libc.so.6 => /lib/libc.so.6 (0x80072b000) # flame:/tmp/jcm-lib/foobar$ LD_LIBRARY_PATH=`pwd`/../libbar ./foobar # libfoo initialized at 0x80062a8a0 # libbar initialized at 0x4004e4 # flame:/tmp/jcm-lib/foobar$
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20050819194748.GA7138>