ライブラリーの管理

Linux* および macOS* 上でのライブラリーの管理

コンパイル処理中、コンパイラーは実行ファイルのビルド時にリンクする必要のあるスタティック・ライブラリーの LIBRARY_PATH 環境変数を読み取ります。ランタイム時に、実行ファイルは LD_LIBRARY_PATH 環境変数で参照されている動的ライブラリーにリンクされます。

LIBRARY_PATH の変更

ディレクトリー (例えば、/libs) を LIBRARY_PATH に追加する場合、次のいずれかを行います。

file.cpp をコンパイルして mylib.a ライブラリーをリンクするには、次のコマンドを入力します。

// Linux* および macOS*
[invocation] file.cpp mylib.a  

[invocation] は icpx または dpcpp です。

ファイル名は、次の順番でリンカーに渡されます。

  1. オブジェクト・ファイル

  2. コマンドライン、応答ファイル、または設定ファイルのいずれかで指定されたオブジェクトまたはライブラリー

  3. インテルの数学ライブラリー、libimf.a

デフォルトでは、インテル® oneAPI DPC++/C++ コンパイラーは、macOS* v10.8 では C++ 標準ライブラリー (libstdc++) の GNU* 実装を使用し、macOS* v10.9 では libc++ 実装を使用します。このデフォルト設定は、-stdlib オプションを使用して変更できます。

-stdlib=libc++	// libc++ に切り替える
-stdlib=libstdc++	// libstdc++ に切り替える

DPC++ でコンパイルしてほかのコンパイラーとリンク

dpcpp コンパイラーを使用して、その環境全体を source する場合、コンパイラー・ライブラリーへの正しいパスが設定されていれば、ほかのコンパイラーとのリンクは正しく動作します。このため、プログラムを DPC++ でコンパイルして、ほかのコンパイラー (例: gcc) とリンクすることができます。コンパイラー環境を source しないでこれを行おうとすると、libsycl.so やほかの内部ライブラリーで未定義の参照が発生してリンクに失敗します。

この問題を解決するには、LD_LIBRARY_PATH に次のパスを追加します。

<install_dir>/compiler/latest/linux/compiler/lib/intel64

<install_dir>/compiler/latest/linux/lib

<install_dir>/compiler/latest/linux/lib/x64

<install_dir>/tbb/latest/lib/intel64/gcc4.8

Windows* 上でのライブラリーの管理

環境変数 LIB には、セミコロンで区切られたディレクトリー・リストが含まれています。Microsoft* リンカーは、ライブラリー (.lib) ファイルを探すときに、このディレクトリーの中を検索します。コンパイラーはライブラリー名をリンカーへ指定しませんが、オブジェクト・ファイルにディレクティブを含めて、各オブジェクトとリンクするライブラリーを指定します。

応答ファイルと設定ファイルにライブラリー名を追加する方法については、「応答ファイルの使用」と「設定ファイルの使用」を参照してください。

コマンドラインでライブラリー名を指定するには、最初に、目的のライブラリーへのパスを環境変数 LIB に追加する必要があります。その後、次のコマンドを入力すると、file.cpp がコンパイルされ mylib.lib ライブラリーにリンクされます。

[invocation] file.cpp mylib.lib

[invocation] は icpx または dpcpp です。