「ランタイムライブラリ」の版間の差分

削除された内容 追加された内容
NekoJaNekoJa (会話 | 投稿記録)
m 加筆
m編集の要約なし
1行目:
'''ランタイムライブラリ'''(英:run-time library)は、プログラムを実行するために必要な[[ライブラリ]]のこと。'''ランタイム'''とは「'''実行時'''」という意味である。「[[エラー|ランタイムエラー]]」といえば「実行時エラー」、すなわち実際に実行してみるまではみつけられないエラーということになる。単に'''ランタイム'''ともいう。
 
==概要==
簡単な機械語命令に置き換えられる文、例えば整数型変数の加算、比較等はプログラム中に現れる毎に[[オブジェクトコード]]の中に埋め込んでいけばいい。ところが、書式付入出力(Cでいえば'''printf()関数'''、Pascal/Modula-2等でいえば'''WRITE手続'''等)等のように複雑で、しかもプログラム中の複数の部分から呼び出される可能性の高いルーチンは、独立した[[ライブラリ]]として実装する方がプログラムをコンパクトにすることができる。このような実行時に必要なライブラリを'''実行時ライブラリ'''と呼ぶ。
 
実行時ライブラリは[[リンカ]]によって各プログラムに付け加えられことがある。この場合、予め各種ルーチンのプログラム中での相対的なアドレスが分かっているため、機能の呼び出しはきわめて簡単である('''静的リンク''')。また、実行時ライブラリは言語処理系依存の独立したファイルとして供給されることもある。そうすると、特定の言語処理系で製作されたプログラム間で一つのライブラリファイルを共用することができるので、ディスク容量の節約になる。ランタイムライブラリ、ランタイムと呼ぶ場合、このような独立した実行時ライブラリファイルを指すことが多い。
 
たとえば、[[Microsoft Visual Basic|Visual Basic]]を使って書かれた[[プログラム (コンピュータ)|プログラム]]を動かす場合、そのプログラム単独では実行出来ず、プログラムを作成する[[ソフトウェア]]である'''Visual Basic'''を製作している[[マイクロソフト|Microsoft]]社から無料で配布されているランタイムライブラリを[[パーソナルコンピュータ|パソコン]]に[[インストール]]していないと動かないことがある。
 
Visual Basicを例にあげたが、他の[[Microsoft Visual C++|Visual C++]]や[[C++ Builder]]などといった他の言語で作成されたプログラムでも大抵はランタイムライブラリがある。[[インストール]]が不要なものは[[Application Programming Interface|API]]や[[フレームワーク]]として[[オペレーティングシステム]]が持っているか、プログラム中に組み込んでしまっている。
 
[[マルチタスク]][[OS]]の場合、同時に動作している複数のタスクが同じライブラリファイルを参照する可能性がある。同じファイルを参照するならば、それぞれのタスク毎にライブラリをロードするのではなく、'''ある同一のメモリ空間内のライブラリを共有'''すると効率が良い。これを'''共有ライブラリ'''と呼ぶ。この場合、実行時に当該ライブラリがロードされていない場合は、OSの機能を用いてライブラリをロードする必要がある。逆に、当該ライブラリを必要とするタスクが存在しなくなれば、メモリ空間からそのライブラリを取り除くことができる。また、'''実行時に初めてリンク'''が行われる'''動的リンク'''を行うことになる。
 
上記の各製品のランタイムライブラリは共有ライブラリとして実装されている。詳細については[[ダイナミックリンクライブラリ]]及び[[ライブラリ]]を参照されたい。ダイナミックリンクライブラリは言語処理系メーカから供給されるだけでなく、OS自体の機能に関わるものはOSメーカからも供給される。