Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 7 Mar 2012 12:37:15 -0800
From:      Doug Hardie <bc979@lafn.org>
To:        Volodymyr Kostyrko <c.kworr@gmail.com>
Cc:        "questions@FreeBSD.org" <questions@freebsd.org>
Subject:   Re: Dynamic Libraries
Message-ID:  <3248CBB5-F412-4F4D-96B1-16F134A87DAC@lafn.org>
In-Reply-To: <4F572CFF.8030708@gmail.com>
References:  <E64D58F0-0EDD-46A1-B022-2CC8BB64BC29@lafn.org> <4F572CFF.8030708@gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help

On 7 March 2012, at 01:40, Volodymyr Kostyrko wrote:

> Doug Hardie wrote:
>> I have encountered something that I do not understand.  Everything =
works fine.  Basically I have a bunch of user modules (low level) that =
are built into a dynamic library.  If I write top level code that calls =
modules in that library, everything works just fine on i386 and AMD64.  =
However, the application involved has another library of modules.  Some =
of them call modules in the low level library.  The top level code call =
modules in both libraries.  Often when it calls a module in the mid =
level library, that module calls several modules in the low level =
library.
>>=20
>> All this works just fine on i386.  However, when I compile everything =
on AMD64 I get an error message that says the lower level library needs =
to be compiled with fPIC.  If I add that to the Makefile for the lower =
level library and rebuild everything, it all works again.  I don't =
understand why the fPIC is required for AMD64.
>>=20
>> Also, how do I tell if the lower level library is being dynamically =
linked at run time, or being directly incorporated into the mid level =
library or top level application?  Since both of these libraries are =
quite large, and they are in use by a number of top level applications, =
I want just one copy to exist in physical memory.
>=20
> This sounds exactly like compiling with clang through ccache. There =
are issues with clang and ccache cooperation. Actually the one you may =
hit is libtool detecting implicit fPIC requirement when running clang =
through ccache.


The Makefile specifies GCC and its FreeBSD 8.0.  I don't believe clang =
was in that soon, but I may be wrong.  How can I check that?  Where is =
clang?  I have installed 9.0 on another system but haven't had time to =
try that out yet.




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3248CBB5-F412-4F4D-96B1-16F134A87DAC>