ライブラリの作成

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

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

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

スタティック・ライブラリをビルドするには、次のように操作します。

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

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

  3. プロジェクトをコンパイルして、新しく作成したライブラリをリンクします。
    ifort main.f90 my_lib.a

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

ifort -L/for/libs main.f90 my_lib.a

共有ライブラリ

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

共有ライブラリをビルドするには、次のように操作します。

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

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

  3. プロジェクトをコンパイルして、新しく作成したライブラリをリンクします。
    ifort main.f90 my_lib.so

「共有ライブラリの作成」も参照してください。