共有可能ライブラリの作成

Open PL/I を使用して、サポートされている任意のオペレーティング システム上に共有可能ライブラリ (共有ライブラリとも呼ばれる) を作成することができます。

共有可能ライブラリにインクルードできるコードを作成するには、-pic オプションを使用して、位置に依存しないコードを作成するように Open PL/I に指示する必要があります。位置に依存しないコードとしてオブジェクト ファイルを生成したら、ldpli または mfplx に対して-so オプションを使用して、そのオブジェクト ファイルを共有可能ライブラリにリンクしてください。

注: AIX 上では、すべての Open PL/I コードが位置に依存しないため、-pic オプションは必要なく、効果もありません。

例:mfplx を使用した共有可能ライブラリの作成

ファイル lib1.pli

library_one: proc;
display('This is library routine one');
end;

ファイル lib2.pli

library_two: proc;
display('This is library routine two');
end;

ファイル myprog.pli

dcl library_one entry;
dcl library_two entry;

foo: proc options(main);
call library_one;
call library_two;
end;

コンパイルおよびリンクに使用するコマンド:

mfplx –pic –so –omylib.so lib1.pli lib2.pli
mfplx –omyprog myprog.pli mylib.so

例:フェッチ可能なプログラムとしての共有オブジェクトの使用

注: 共有オブジェクトをフェッチ可能なプログラムとして使用する場合は、PL/I のプロシージャと共有オブジェクトの外部名を同じにすることが重要です。そうしないと、.so がロードされません。

ファイル myfetch.pli

myfetch: proc external(‘myfetch’);
display(‘Inside fetchable function’);
end;

ファイル myprog.pli

dcl myfetch entry options(fetchable) external(‘myfetch’);

foo: proc options(main);
call myfetch;
end;

コンパイルおよびリンクに使用するコマンド:

mfplx –pic –so –omyfetch.so myfetch.pli
mfplx –omyprog myprog.pli