static libs ... again

Patrice Dumas pertusus at free.fr
Fri Feb 17 21:43:12 UTC 2006


> > It is really handy to be able to compile a model statically
> > and then put the executable on any computer to run it.
> And what if your compiled binaries are buggy? What if the ABI to the
> libraries underneath your libraries change?

I don't understand your point. When I compile statically I get an 
executable that is statically compiled and not bound to any ABI. And 
of course if the library is buggy I'll have to recompile (but most
of the time math libs have tests that allows to verify that they do
the correct thing).

> Any what makes math libraries special wrt. to shared libs? 
> Except that they may suffer from some speed penalty, because math apps
> typically call them frequently, I don't see what makes them different
> from other "computational expensive" libraries. 

The math libs are frequently used to compile binaries that don't have
security issues. And in my case portability may be convenient, see below.

> Your argumentation is the same as many people come up with when it comes
> to this topic. IMO, you guys are just trying to "sanction" your
> malpractice/bad habits (no punt intended).
> 
> Bundle the shared math libs you had used to compile your applications
> with your applications, or better package them into packages allowing
> parallel installation (compat-packages) and all you say will be resolve,
> except that your application binaries will be (much?) smaller.

I think that you don't get the point. I don't want to install the shared
lib on another computer that run a maybe completely unrelated linux distro.
I just want to run the executable. And it is much less practical to have
to bundle the shared libs with the executable to have portability when it
is so simple to commpile statically.

I will elaborate on my needs. I do numerical models that use math libraries.
If they are compiled statically, I can take my binary and run it on another
linux distro running, say, a debian stable. Or a redhat 6.1 that still 
run on a computer which is not connected to the internet, but still in use
(unbelievable, isn't it?). I have to compile statically to be able to
do that. Even from a fedora core to an older RHEL there are binary 
incompatibilities. And maybe between fc5 and fc4 for some arches.

Another case is that I have a binary, and I want to run it 5 years later,
for example to verify a result I found 5 years back. If I don't keep the
statically linked executable, I won't be able to reproduce the results
(be them right or wrong).

As I said this need for portability of binaries may only be a need for a
small subset of users, but I can't see how you may achieve the same degree
of portability with shared libs. I can't see how you practically handle the
above cases (except by bundling the shared libs with the binary, and this
is not very practical, and you must also bundle the loader...).

--
Pat




More information about the fedora-extras-list mailing list