Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 7 Mar 2012 00:53:13 -0800
From:      Doug Hardie <bc979@lafn.org>
To:        "questions@FreeBSD.org" <questions@freebsd.org>
Subject:   Dynamic Libraries
Message-ID:  <E64D58F0-0EDD-46A1-B022-2CC8BB64BC29@lafn.org>

next in thread | raw e-mail | index | archive | help
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.

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.

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.=



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?E64D58F0-0EDD-46A1-B022-2CC8BB64BC29>