「ランタイムライブラリ」の版間の差分
削除された内容 追加された内容
m ボット: 言語間リンク 2 件をウィキデータ上の d:q1444922 に転記 |
編集の要約なし |
||
1行目:
'''ランタイムライブラリ'''({{lang-en-short|run-time library}})は、[[標準Cライブラリ]]など、[[プログラ
まず[[C言語]]でのプログラミングの場合を例に説明すると、標準Cライブラリだけではなく、典型的な名前は <code>crt0</code> であるが(詳細は [[:en:Crt0]])、「スタートアップルーチン」を含んだモジュールが絶対に必要である。スタートアップルーチンには[[実行ファイル]]においてエントリポイントとなる部分に始まり、メインプログラムにある <code>main</code> 関数を呼ぶまでのコードが含まれている。
他には、Cコンパイラがコード生成の際に暗黙のうちに呼出して利用するルーチンが入ったライブラリ(GCCの場合、<code>libgcc</code>)などがある。
これらのライブラリは、もし仮にプログラマが、[[リンケージエディタ]](リンカ)を素の状態でコマンド実行するのであれば、その引数に <code>ld /usr/lib/crt1.o myprog.o -lgcc -lc</code> のようにして明示的に指定しなければならないが、通常は処理系実装のデフォルトのいわゆるコンパイラドライバ(Unixでの伝統的な名前は cc )により、このようなコマンドの組立ては暗黙裡に行われるため通常のプログラミングではプログラマは気にしなくてよい。外形的には、数学ライブラリを指定する <code>-lm</code> のように明示的に指定するのではなく、そのように暗黙裡にリンクされるライブラリがランタイムライブラリである、と言える。
言語仕様がリッチであるほど、その言語によるプログラムにおいて言語機能をサポートするために、ランタイムライブラリは大きくなる。たとえば、C++では例外処理や、new、delete、コンストラクタ付きのstatic変数といった機能が提供される。他の言語でもっと大きなものの例としては[[ガベージコレクション]]の機能などがある。また、以上からあきらかなように、処理系を他の環境に移植する場合や、クロスコンパイルなどでは、作業者は[[ランタイムライブラリ]]についても面倒を見なければならない。
必然的にリンクされるものであり、インタフェース的にも密結合であることから、([[動的リンク]]がサポートされている環境でも)[[静的リンク]]されることも多い。同様に、[[ダイナミックリンクライブラリ]]で提供されていて動的リンクする場合でも、デマンドローディングではなく、プロセスの起動時にロード・リンクされることもある。
== 外部リンク ==
|