Fortran のソースファイルから共有ライブラリを作成するには、ifort コマンドを使用してファイルを処理します。
.so ファイルを作成するには、-shared オプションを指定しなければなりません。
-o output オプションを指定して、出力ファイルに名前を付けることができます。
-c オプションを省略すると、コマンド行から直接、共有ライブラリ (.so ファイル) を単一ステップで作成できます。
-o output オプションを省略すると、コマンド行の最初の Fortran ファイルの名前が、.so ファイルのファイル名を作成するのに使用されます。また、共有ライブラリ作成に関連付けられている追加オプションを指定できます。
-c オプションを指定すると、オブジェクト・ファイル (.o ファイル) を作成できます。これは、-o オプションで名前を付けることができます。共有ライブラリを作成するには、.o ファイルを ld と一緒に処理します。この際、共有ライブラリ作成に関連付けられているオプションを指定します。
Itanium® ベース・システムで共有ライブラリをビルドする場合、共有ライブラリに含まれる各オブジェクト・ファイルのコンパイルを行う -fpic オプションを指定します。このオプションが使用されていない場合、リンカにより、「@gprel relocation against dynamic symbol.」というようなエラー・メッセージが発行されます。
ifort コマンドのみで共有ライブラリ (.so) ファイルを作成できます。
ifort -shared octagon.f90
-shared オプションは共有ライブラリを作成するのに必要です。octagon.f90 はソースファイルの名前です。複数のソースファイルとオブジェクト・ファイルを指定できます。
-o オプションが省略されているため、共有ライブラリ・ファイルの名前は octagon.so になります。
-c オプションが省略されているため、Fortran ライブラリの標準リストを指定する必要はありません。
最初に .o ファイルを作成する必要があります。次の例では、octagon.o ファイルを作成します。
ifort -c octagon.f90
octagon.o ファイルを ld コマンドの入力として使用して、octagon.so という共有ライブラリを作成します。
ld -shared -no_archive octagon.o \
-lifport -lifcoremt -limf -lm -lirc -lcxa \
-lpthread -lirc -lunwind -lc -lirc_s
次の点に注意してください。
-shared オプションは共有ライブラリを作成するのに必要です。
オブジェクト・ファイルの名前は octagon.o です。複数のオブジェクト (.o) ファイルを指定できます。
-lifport とそれに続くオプションは、ライブラリの標準リストです。これは、ifort コマンドで、ld に渡すことになるリストです。共有ライブラリを作成する場合、すべてのシンボルが解決される必要があります。
正しくライブラリを指定するために、-dryrun コマンドの出力結果から、使用されるすべてのライブラリを確認するとよいでしょう。
-Qoption コマンドを使用してオプションを ld に渡します。
共有ライブラリの詳細は、「ライブラリの作成」を参照してください。
「ld(1)」リファレンス・ページも参照してください。
ld で共有ライブラリを作成する場合、次の制約に注意してください。
共有ライブラリをアーカイブ・ライブラリにリンクすることはできません。
共有ライブラリを作成する場合、外部参照を解決するために依存できるのは、他の共有ライブラリだけです。アーカイブ・ライブラリに存在するルーチンを参照する必要がある場合は、そのルーチンを個別の共有ライブラリに入れるか、または作成する共有ライブラリに含めます。共有ライブラリの作成時には、複数のオブジェクト (.o) ファイルを指定できます。
ルーチンを個別の共有ライブラリに入れるには、そのルーチンのソースファイルかオブジェクト・ファイルを入手して、必要に応じて再コンパイルし、個別の共有ライブラリを作成します。ifort コマンドで再コンパイルする際、または ld コマンドで共有ライブラリを作成する際に、オブジェクト・ファイルを指定することができます。
作成する共有ライブラリにルーチンを含めるには、そのルーチン (ソースファイルまたはオブジェクト・ファイル) を共有ライブラリを構成する他のソースファイルと一緒に配置し、必要に応じて再コンパイルします。
次に、共有ライブラリを作成しますが、再コンパイル時または共有ライブラリ作成時に、そのルーチンが含まれるファイルを指定します。ifort コマンドで再コンパイルする際、または ld コマンドで共有ライブラリを作成する際に、オブジェクト・ファイルを指定することができます。
共有ライブラリを作成する場合、すべてのシンボルが定義 (解決) されている必要があります。
共有ライブラリの作成時には、すべてのシンボルが ld に対して定義されていなければならないため ( -Qoption コマンドを使用しない限り)、ld コマンド行にすべてのインテル® Fortran 標準ライブラリを含む共有ライブラリを指定する必要があります。 インテル Fortran の標準ライブラリのリストは、-lstring オプションを使って指定することができます。
共有ライブラリを作成したら、これを参照するプログラムを実行する前に、プライベートまたはシステム全体で使用するためにインストールする必要があります。
プライベート用の共有ライブラリをインストールするには (テストを行う場合など)、「ld(1)」で説明されているように環境変数を LD_LIBRARY_PATH に設定します。
システム共通の共有ライブラリをインストールするには、ld が使用する標準ディレクトリ・パスの 1 つに共有ライブラリ・ファイルを配置します。「ld(1)」を参照してください。