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

削除された内容 追加された内容
編集の要約なし
編集の要約なし
7行目:
これらのライブラリは、もし仮にプログラマが、[[リンケージエディタ]](リンカ)を素の状態でコマンド実行するのであれば、その引数に <code>ld /usr/lib/crt0.o myprog.o -lgcc -lc</code> のようにして明示的に指定しなければならないが、通常は処理系実装のデフォルトのいわゆるコンパイラドライバ(Unixでの伝統的な名前は cc )により、このようなコマンドの組立ては暗黙裡に行われるため通常のプログラミングではプログラマは気にしなくてよい。外形的には、数学ライブラリを指定する <code>-lm</code> のように明示的に指定するのではなく、そのように暗黙裡にリンクされるライブラリがランタイムライブラリである、と言える。
 
言語仕様がリッチであるほど、その言語によるプログラムにおいて言語機能をサポートするために、ランタイムライブラリは大きくなる。たとえば、C++では例外処理や、new、delete、コンストラクタ付きのstatic変数といった機能が提供される。他の言語でもっと大きなものの例としては[[ガベージコレクション]]の機能などがある。また、以上からあきらかなように、処理系を他の環境に移植する場合や、クロスコンパイなどでは、作業者はランタイムライブラリについても面倒を見なければならない。
 
必然的にリンクされるものであり、インタフェース的にも密結合であることから、([[動的リンク]]がサポートされている環境でも)[[静的リンク]]されることも多い。同様に、[[ダイナミックリンクライブラリ]]で提供されていて動的リンクする場合でも、デマンドローディングではなく、プロセスの起動時にロード・リンクされることもある。