10.3 Dynamic loading of shared libraries

動的ロードをサポートするプラットフォーム上では、ocamlrunは標準的なランタイムシステム以外にも、Cプリミティブを提供しているC共有ライブラリ(DLLなど)を動的にリンクすることができます。 これらのライブラリの名前は、18.1.4で述べたようにリンク時に提供され、バイトコード内に記録されます。 ocamlrunはバイトコードを実行する際に、これらのこれらライブラリを探し、Cプリミティブへの参照を解決します。

ocamlrunは共有ライブラリを、以下のディレクトリを上から順に探します。

  1. ocamlrunに-Iオプションで渡されたディレクトリ
  2. ''CAML_LD_LIBRARY_PATH''環境変数で指定されたディレクトリvariable.
  3. リンク時にocamlcに-dllpathオプションで渡されたディレクトリ。(このディレクトリは、バイトコード実行ファイルに記録されます)
  4. ld.confファイルで指定されたディレクトリ.
  5. このファイルは、Objective Camlの標準ディレクトリに置かれ、一行に一つのディレクトリが書かれています。通常は、Objective Camlの標準ライブラリのディレクトリのみがかかれています。ユーザは、よく使用するライブラリを含んだディレクトリを追加することができます。しかし、インストールを簡潔にするために、共有ライブラリはシステムのstublibディレクトリにインストールすることを薦めます。
  6. システムの動的ローダのデフォルトディレクトリ。Unixでは一般的に、/libと/usr/lib、/etc/ld.so.confに書かれたディレクトリ、''LD_LIBRARY_PATH''環境変数で指定されたディレクトリなどです。
  7. Windowsでは、システムディレクトリと''PATH''環境変数に書かれたディレクトリです。