12 July 2014

One of the things I hate most about Linux is to compile software. Sometimes it is a nightmare: lack of root permission, requirement of new gcc, dependencies on huge or weird libraries, etc. Whenever these happens, I ask myself: why not just distribute statically linked binaries such that they can run on most Linux distributions? I knew a few reasons, but only today I took the question a little more serious and did a google search. The following two links are quite useful: static linking vs. dynamic linking and static linking considered harmful.

In summary, static linking has the following disadvantages: more likely to be attacked, not receiving patches in dynamic libraries, more memory hungry, not truly static, sometimes not flexible and potentially violating GPL. I buy all these arguments. However, for tools in bioinformatics, these are not big concerns because most bioinformatics tools:

  • are not system utilities and are not security-critical.

  • are only linked to small dynamic libraries. Statically linking the tools will not cost much memory.

  • do not often use glibc features that have to be dynamically linked.

  • are distributed under a license compatible with LGPL.

Most command-line bioinformatics tools can be statically linked without problems. And I think we should create a repository for precompiled bioinformatics tools. This will at least make my life much easier. What about you?



blog comments powered by Disqus