共有ライブラリを動的にリンクすると、静的にリンクする場合よりもディスクを効率的に使用できる。それ以上に重要なのは、セキュリティのアップデートを簡単に実施できることだ。しかし、特定のバージョンの動的ライブラリを対象としてコンパイルされた実行形式ファイルは、そのバージョンの共有ライブラリが存在するコンピュータでしか実行できない。Fedora 9が稼働するコンピュータとopenSUSE 11が稼働するコンピュータでは、共有ライブラリのバージョンが微妙に違っていても不思議はない。このようなコンピュータ間で実行形式ファイルをコピーして実行すると、共有ライブラリのバージョンが異なるため正常に動作しないことがある。このような場合は、 ELF Statifier を使って静的リンク版の実行形式ファイルを作成すると、実行時に共有ライブラリを探す代わりに、組み込まれた共有ライブラリが使用される。静的リンク版の実行形式ファイルは、別のLinuxディストリビューションや同じLinuxディストリビューションの別のバージョンでもずっと高い確率で動作する。
実行形式ファイルに共有ライブラリを静的にリンクすれば、当然その分ディスクの消費量は増える。しかし、最近はテラバイトを単位とする大容量のディスクさえあるので、ディスク容量の懸念はセキュリティの懸念ほど大きくない。実行形式ファイルが、ある共有ライブラリ ─ 仮にlibfooとでも呼んでおくが ─ と動的にリンクされている場合にlibfooのセキュリティ・アップデートが行われたとしよう。アプリケーションが動的にリンクされるとlibfooの共有コピーが更新されるため、古いlibfooにあったセキュリティの問題によってアプリケーションが脅かされることはなくなる。静的にリンクされた実行形式ファイルではこうはいかない。古いlibfooのプライベートなコピーが組み込まれたまま、それを使い続けることになる。新しいlibfooとセキュリティ・アップデートを取り入れるには、静的にリンクされた実行形式ファイルを再作成する必要がある。
このような事情はあるにせよ、Fedoraマシンでコンパイルしたデーモンを、デーモン本体と依存ファイルを再コンパイルしないで、そのままopenSUSEマシンで実行したいこともあるだろう。とりあえず今実行してみたい、再ビルドは必要なら後でもできる、そういった状況だ。もちろん、実行形式ファイルをコピーしてくるコンピュータと、このファイルを実行するコンピュータは、同じアーキテクチャでなければならない。
ELF Statifierは、1-ClickパッケージがopenSUSE 10.3向けに用意されているが、Ubuntu HardyやFedoraには用意されていない。今回は、ELF Statifieのバージョン1.6.14をFedora 9マシン(x86)でソースからビルドした。ELF Statifieではautotoolsを使わないため、makeを呼び出してコンパイルする。次のコマンドでコンパイルとインストールを行う。
$ tar xzvf statifier-1.6.14.tar.gz $ cd ./statifier-* $ make $ sudo make install
