<div dir="ltr"><div><div><br clear="all"> Robert Nesius writes:<br>
> Multiple Makefiles not strictly needed though that can work.  I think<br>
> multiple targets in the makefile would maybe be more handy.<br>
><br>
> all: static shared<br>
><br>
> static:<br>
>    Compile source files with static flags - object files as .o<br>
>    link with static flags (generate the .a or whatever)<br>
><br>> shared:<br>
>    Compile source files with shared flags - object files as .so?<br>
>    Link with shared flags - generate the .so<br>
><br>
> I was going to do an experiment to see if you could compile with source<br>
> files with -fPIC and then link statically. While addresses have to be<br>> position independent in a shared object and statically linked code does not<br>> need to be position independent, I'm not sure that implies addresses in a<br>

> static lib CAN'T be position independent.<br><br></div><div>Sorry, I should have added that I have it building both libraries <br>using files that were compiled using fpic.  It seems to work fine, <br>but I noticed that one of my executables is 1.5% bigger and <br>
another is 3.3% bigger when they are linked with the static library <br>built from files that were compiled with fpic.  I've put a lot of work <br>into making the executables lean and want to preserve that here.<br></div>
<div>(I'm not sure I need a shared library, but it seems to make some<br></div><div>sense in my "data center" where I have multiple instances of <br></div><div>the back tier running.  The other two programs I mentioned are <br>
the middle and front tiers.  I expect to continue to build those<br>using  the static library.)<br></div><div><br></div></div><div><div><div><div>
><br>
> It's been awhile since I've built something from source. I think I'm<br>
> remembering for most libraries I built, asking for shared and static libs<br>
> resulted in all object files being compiled with flags appropriate for<br>
> shared libs and then two separate links at the end to create the .a and<br>
> .so.<br>
><br>
> I'd recommend downloading zlib or some other small library and configure it<br>
> to compile both shared and static.  Log the build and then see how they<br>> handled it. I'm guessing there's some useful stuff in their autoconf setup<br>
> you could swipe?  If you're not using autoconf you could look at their<br>
> generated Makefiles for ideas...<br><br></div><div>I haven't been using autoconf.  I have a hand written makefile.   Someone <br>suggested looking into libtool. <br></div><div><br><br>-- <br><div dir="ltr">Brian Wood<br>
Ebenezer Enterprises - go Twins.<br><a href="http://webEbenezer.net" target="_blank">http://webEbenezer.net</a>          (651) 251-9384<br><br><br><br></div>
</div></div></div></div></div>