16.4. GCC での静的ライブラリーの使用
静的なライブラリーは、オブジェクトファイルを含むアーカイブとして利用できます。リンク後、それらは作成された実行可能ファイルの一部となります。
Red Hat は、さまざまな理由から静的リンクを使用することは推奨していません。「静的リンクおよび動的リンク」 を参照してください。静的リンクは、特に Red Hat が提供するライブラリーに対して、必要な場合に限り使用してください。
前提条件
- GCC がシステムにインストールされていること
- 静的リンクおよび動的リンクについて理解していること
- 有効なプログラムを設定するソースまたはオブジェクトファイルセット。 静的ライブラリー foo のみが必要です。
-
foo ライブラリーは
libfoo.a
ファイルとして利用でき、動的リンクにlibfoo.so
ファイルは指定されていない。
Red Hat Enterprise Linux に含まれるライブラリーのほとんどは、動的リンク用としてのみサポートされています。次の手順は、動的リンクに 無効の ライブラリーに対してのみ有効です。「GCC での静的および動的ライブラリーの両方の使用」 を参照してください。
手順
ソースとオブジェクトファイルからプログラムをリンクするには、静的にリンクされたライブラリー foo (libfoo.a
) を追加します。
- コードが含まれるディレクトリーに移動します。
foo ライブラリーのヘッダーで、プログラムソースファイルをコンパイルします。
$ gcc ... -Iheader_path -c ...
header_path は、foo ライブラリーのヘッダーファイルを含むディレクトリーのパスに置き換えます。
プログラムを foo ライブラリーにリンクします。
$ gcc ... -Llibrary_path -lfoo ...
library_path は、
libfoo.a
ファイルを含むディレクトリーへのパスに置き換えます。プログラムを実行するには、以下を行います。
$ ./program
静的リンクに関連付けられる GCC オプション -static
は、すべての動的リンクを禁止します。代わりに -Wl,-Bstatic
オプションおよび -Wl,-Bdynamic
オプションを使用して、リンカーの動作をより正確に制御します。「GCC での静的および動的ライブラリーの両方の使用」 を参照してください。