Menu Close
2.3.4. GCC でのライブラリーの使用
ライブラリーは、プログラムで再利用可能なコードのパッケージです。C または C++ のライブラリーは、以下の 2 つの部分で構成されます。
- ライブラリーコード
- ヘッダーファイル
ライブラリーを使用するコードのコンパイル
ヘッダーファイルでは、ライブラリーで提供する関数や変数など、ライブラリーのインターフェースを記述します。コードをコンパイルする場合に、ヘッダーファイルの情報が必要です。
通常、ライブラリーのヘッダーファイルは、アプリケーションのコードとは別のディレクトリーに配置されます。ヘッダーファイルの場所を GCC に指示するには、-I
オプションを使用します。
$ gcc ... -Iinclude_path ...
include_path は、ヘッダーファイルのディレクトリーのパスに置き換えます。
-I
オプションは、複数回使用して、ヘッダーファイルを含むディレクトリーを複数追加できます。ヘッダーファイルを検索する場合は、-I
オプションで表示順に、これらのディレクトリーが検索されます。
ライブラリーを使用するコードのリンク
実行ファイルをリンクする場合には、アプリケーションのオブジェクトコードと、ライブラリーのバイナリーコードの両方が利用できる状態でなければなりません。静的ライブラリーおよび動的ライブラリーのコードは、形式が異なります。
-
静的なライブラリーは、アーカイブファイルとして利用できます。静的なライブラリーには、一連のオブジェクトファイルが含まれます。アーカイブファイルのファイル名の拡張子は
.a
になります。 -
動的なライブラリーは共有オブジェクトとして利用できます。実行ファイルの形式です。共有オブジェクトのファイル名の拡張子は
.so
になります。
ライブラリーのアーカイブファイルまたは共有オブジェクトファイルの場所を GCC に渡すには、-L
オプションを使用します。
$ gcc ... -Llibrary_path -lfoo ...
library_path は、ライブラリーのディレクトリーのパスに置き換えます。
-I
オプションは複数回使用して、ディレクトリーを複数追加できます。ライブラリーを検索する場合は、-L
オプションで表示順に、このディレクトリーが検索されます。
オプションの順序は重要です。対象のライブラリーがディレクトリーにリンクされていることが分からないと、GCC は、ライブラリー foo をリンクできません。そのため、-L
オプションを使用して先にライブラリーディレクトリーを指定してから、-l
オプションでライブラリーをリンクするようにしてください。
1 つの手順でライブラリーを使用するコードをコンパイルおよびリンクする方法
1 つの gcc
コマンドでコードをコンパイルおよびリンクできる場合は、上記のオプションを一度に使用します。
関連情報
- GNU コンパイラーコレクション (GCC) の使用— ディレクトリー検索のオプション
- GNU コンパイラーコレクション (GCC) の使用— リンクのオプション