<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Sun, Mar 31, 2013 at 1:13 PM, Florin Iucha <span dir="ltr"><<a href="mailto:florin@iucha.net" target="_blank">florin@iucha.net</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Sat, Mar 30, 2013 at 09:53:04PM +0000, Brian Wood wrote:<br>
> Up till now I've just been building a static library.<br>
> Now I want to also create a shared library.<br>
> I'm trying to figure out how to compile the files<br>
> without the fpic option for the static library and<br>
> then add fpic and recompile the files for the shared<br>
> library.  I'd like to do this from one makefile.<br>
<br>
Why is that a requirement?  Can that one master makefile call two<br>
other makefiles, one that produces the static library and the other<br>
that produces the shared libary?  Or it might be even the same slave<br>
makefile, that is called with different arguments (to insert fpic on<br>
the compiler command line, for instance).<br>
<br>
Clearly you need to generate object files in two separate directories,<br>
or you need to name them differently.<br></blockquote><div><br></div><div style>Multiple Makefiles not strictly needed though that can work.  I think multiple targets in the makefile would maybe be more handy.  </div><div style>
<br></div><div style>all: static shared</div><div style><br></div><div style>static: </div><div style>    Compile source files with static flags - object files as .o</div><div style>    link with static flags (generate the .a or whatever)</div>
<div style><br></div><div style>shared: </div><div style>    Compile source files with shared flags - object files as .so?  </div><div style>    Link with shared flags - generate the .so</div><div style><br></div><div style>
I was going to do an experiment to see if you could compile with source files with -fPIC and then link statically. While addresses have to be position independent in a shared object and statically linked code does not need to be position independent, I'm not sure that implies addresses in a static lib CAN'T be position independent.</div>
<div style><br></div><div style>It's been awhile since I've built something from source. I think I'm remembering for most libraries I built, asking for shared and static libs resulted in all object files being compiled with flags appropriate for shared libs and then two separate links at the end to create the .a and .so.  </div>
<div style><br></div><div style>I'd recommend downloading zlib or some other small library and configure it to compile both shared and static.  Log the build and then see how they handled it. I'm guessing there's some useful stuff in their autoconf setup you could swipe?  If you're not using autoconf you could look at their generated Makefiles for ideas... </div>
<div style><br></div><div style>-Rob</div><div style> </div></div></div></div>