Jakub Jelinek <ja...@redhat.com> writes:

>> -static option?  and 3) Is there a way to fix them?  I've even gone so
>> far as to manually run collect2 specifying my own hand edited command
>> line, but nothing I've tried there has worked either.
>
> Don't link statically, there are many reasons not to and only very few
> reasons for it (primarily exception is some system recovery tools that are
> supposed to work even when shared libraries are hosed).
> See http://people.redhat.com/drepper/no_static_linking.html

The main reason to link statically is the inverse of Ulrich's first
reason to link dynamically: if you link dynamically, your program is
vulnerable to changes in the shared libraries.  If your program is
carefully tuned and tested, then changes to shared libraries can
introduce unexpected performance changes, or even, in the worst case,
unexpected bugs.  Another way to say "by fixing a dynamic library you
can fix a bug in every program in one place" is "by distributing a new
dynamic library, you can break every program at once."

I think the argument against static linking does not consider the world
where one builds a carefully tuned executable and then runs it for many
years.  In that environment, each change to a dynamic library requires
careful retesting of all the affected programs.  But it does not follow
that we never want to change the library, because not all programs are
performance sensitive, and new programs require new features.

Ian

Reply via email to