インテル® C++ コンパイラー 17.0 デベロッパー・ガイドおよびリファレンス

ライブラリーの作成

スタティック・ライブラリー

ライブラリーとは、インデックスの付いたオブジェクト・ファイルのコレクションです。ライブラリーは、リンクされたプログラムで必要な場合にインクルードされます。 オブジェクト・ファイルとライブラリーを組み合わせることで、ソースを公開せずにコードを簡単に配布することができます。 また、より少ないコマンドラインの入力で、プロジェクトをコンパイルすることができます。

スタティック・ライブラリーを使用して生成された実行ファイルは、個々のソースまたはオブジェクト・ファイルから生成された実行ファイルと同じです。 スタティック・ライブラリーは、ランタイムでは必要ないため、実行ファイルを配布する際に含める必要はありません。 一般的に、コンパイル時には個々のソースファイルをリンクするより、スタティック・ライブラリーをリンクするほうが早く処理することができます。

Linux* でスタティック・ライブラリーをビルドする方法:

  1. c オプションを使用して、ソースファイルからオブジェクト・ファイルを生成します。

    icpc -c my_source1.cpp my_source2.cpp my_source3.cpp
  2. GNU* の ar ツールを使用して、オブジェクト・ファイルからライブラリーを作成します。

    ar rc my_lib.a my_source1.o my_source2.o my_source3.o
  3. プロジェクトをコンパイルして、新しく作成したライブラリーをリンクします。

    icpc main.cpp my_lib.a

ライブラリー・ファイルとソースファイルが異なるディレクトリーにある場合、Ldir オプションを使用して、ライブラリーのディレクトリーを指定します。

icpc -L/cpp/libs main.cpp my_lib.a

OS X* でスタティック・ライブラリーをビルドする方法:

  1. 次のコマンドを実行して、オブジェクト・ファイルを生成し、ライブラリー・ファイルを作成します。

    icpc -fpic -o mylib.a -staticlib my_source1.cpp my_source2.cpp my_source3.cpp

  2. プロジェクトをコンパイルして、新しく作成したライブラリーをリンクします。

    icpc main.cpp my_lib.a

ライブラリー・ファイルとソースファイルが異なるディレクトリーにある場合、Ldirdir オプションを使用して、ライブラリーのディレクトリーを指定します。

icpc -L/cpp/libs main.cpp my_lib.a

プロシージャー間の最適化 (IPO) を使用する場合は、xiar を使用した「IPO オブジェクトからのライブラリーの作成」を参照してください。

共有ライブラリー

共有ライブラリーは、ダイナミック・ライブラリーまたはダイナミック共有オブジェクト (DSO) とも呼ばれ、スタティック・ライブラリーとは異なる形でリンクされます。 ビルドの際、リンカーは必要なすべてのシンボルを実行ファイルにリンクするか、またはランタイム時に共有ライブラリーからリンクされるようにします。 共有ライブラリーからコンパイルされた実行ファイルのサイズは小さくなりますが、実行ファイルが正常に動作するためには共有ライブラリーをインクルードする必要があります。 複数のプログラムで同じ共有ライブラリーを使用している場合、ライブラリーの 1 つのコピーをロードするだけでかまいません。

Linux* で共有ライブラリーをビルドする方法:

  1. fPIC および c オプションを使用して、ソースファイルからオブジェクト・ファイルを生成します。

    icpc -fPIC -c my_source1.cpp my_source2.cpp my_source3.cpp
  2. shared オプションを使用して、オブジェクト・ファイルからライブラリーを作成します。

    icpc -shared -o my_lib.so my_source1.o my_source2.o my_source3.o
  3. プロジェクトをコンパイルして、新しく作成したライブラリーをリンクします。

    icpc main.cpp my_lib.so

OS X* で共有ライブラリーをビルドする方法:

  1. 次のコマンドを実行して、オブジェクト・ファイルを生成し、ライブラリー・ファイルを作成します。

    icpc -fPIC -o my_lib.so -dynamiclib my_source1.cpp my_source2.cpp my_source3.cpp

  2. プロジェクトをコンパイルして、新しく作成したライブラリーをリンクします。

    icpc main.cpp my_lib.dylib

Windows® では、次のオプションを使用してライブラリーを作成します。

オプション

説明

/LD/LDd

DLL を生成します。d は、デバッグバージョンを示します。

/MD/MDd

コンパイルし、ダイナミック・マルチスレッド C ランタイム・ライブラリーをリンクします。 d は、デバッグバージョンを示します。

/MT/MTd

コンパイルし、スタティック・マルチスレッド C ランタイム・ライブラリーをリンクします。 d は、デバッグバージョンを示します。

/Zl

オブジェクト・ファイルにデフォルト・ライブラリーを埋め込まないようにします。

Windows® では、次のオプションを使用してライブラリーを作成します。

オプション

説明

/LD/LDd

DLL を生成します。d は、デバッグバージョンを示します。

/MD/MDd

コンパイルし、ダイナミック・マルチスレッド C ランタイム・ライブラリーをリンクします。 d は、デバッグバージョンを示します。

/MT/MTd

コンパイルし、スタティック・マルチスレッド C ランタイム・ライブラリーをリンクします。 d は、デバッグバージョンを示します。

/Zl

オブジェクト・ファイルにデフォルト・ライブラリーを埋め込まないようにします。

関連情報