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