ランタイムライブラリ

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動先: 案内検索

ランタイムライブラリ: run-time library)は、標準Cライブラリなど、コンピュータプログラムの実行時(ランタイム)にメインプログラムと常に同時に存在して利用される前提のライブラリである。詳細は環境(OSや言語や処理系)に依存する。

まずC言語でのプログラミングの場合を例に説明すると、標準Cライブラリだけではなく、典型的な名前は crt0 であるが(詳細は en:Crt0)、「スタートアップルーチン」を含んだモジュールが絶対に必要である。スタートアップルーチンには実行ファイルにおいてエントリポイントとなる部分に始まり、メインプログラムにある main 関数を呼ぶまでのコードが含まれている。

他には、Cコンパイラがコード生成の際に暗黙のうちに呼出して利用するルーチンが入ったライブラリ(GCCの場合、libgcc)などがある。

これらのライブラリは、もし仮にプログラマが、リンケージエディタ(リンカ)を素の状態でコマンド実行するのであれば、その引数に ld /usr/lib/crt0.o myprog.o -lgcc -lc のようにして明示的に指定しなければならないが、通常は処理系実装のデフォルトのいわゆるコンパイラドライバ(Unixでの伝統的な名前は cc )により、このようなコマンドの組立ては暗黙裡に行われるため通常のプログラミングではプログラマは気にしなくてよい。外形的には、数学ライブラリを指定する -lm のように明示的に指定するのではなく、そのように暗黙裡にリンクされるライブラリがランタイムライブラリである、と言える。

言語仕様がリッチであるほど、その言語によるプログラムにおいて言語機能をサポートするために、ランタイムライブラリは大きくなる。たとえば、C++では例外処理や、new、delete、コンストラクタ付きのstatic変数といった機能が提供される。他の言語でもっと大きなものの例としてはガベージコレクションの機能などがある。また、以上からあきらかなように、処理系を他の環境に移植する場合や、クロスビルドなどでは、作業者はランタイムライブラリについても面倒を見なければならない。

必然的にリンクされるものであり、インタフェース的にも密結合であることから、(動的リンクがサポートされている環境でも)静的リンクされることも多い。同様に、ダイナミックリンクライブラリで提供されていて動的リンクする場合でも、デマンドローディングではなく、プロセスの起動時にロード・リンクされることもある。

外部リンク[編集]