2011-01-29 20 views
3

私はC++を初め、すべてを理解しようとしています。私は、リンカーがオブジェクトファイルを外部ファイルにリンクすることを知っています。正しい?リンカはプリプロセッサをリンクしていますか?または単に追加のファイルですか?C++のリンカについて混乱しています

たとえば、単純なHello Worldプログラムでは、リンカは私のHello Worldプログラムとリンクしますか?

+3

私はウィキペディア 'http://en.wikipedia.org/wiki/Linker_(コンピューティング)'にかなり愛情を抱いていると言わなければならず、リンクは今では壊れています:( – Marlon

+0

@マールロン: –

+0

@Cody、私はそれを貼り付けたときに壊れていたので、コードタグで投稿しなければならなかった:P – Marlon

答えて

3

Thisです。リンカーリンカがライブラリと.oファイルをリンクする

+0

Wow Lurlurk我々詳細へありがとう。 – USDblades

0

Wikipedia。コンパイラは.oファイルを生成します。プリプロセッサはコンパイル時に処理されます。非常に一般的な一言で言えば、G ++ -o proName relatObjFile.o(外部ライブラリ)

+0

ちょっとショーン、私はあなたの説明が好きだった。 – USDblades

1

:コンパイル:G ++ -c relatedFile.cpp

ステップ2:リンク、例えば

ステップ1

リンカの主な機能は、Hello Worldプログラムをprinfなどのプログラムで呼び出されたライブラリルーチンと共に、OSがmemeoryにロードして制御の転送を受け取る準備ができている実行可能ファイルにパッケージ化することです。このパッケージは、プログラムのアドレス空間にコードの配列を作成します。この作業の一環として、リンカは、実行可能イメージ内のアドレスオフセットをシンボルに割り当てるなど、コード内のシンボルを "解決"する必要があります。また、リンカは、絶対メモリアドレスでなければならない特定のグローバルシンボルへのポインタを含む再配置テーブルを作成します。絶対メモリアドレスはリンク時には知ることができないので、OSローダによってロード時に決定され、実行可能イメージは制御の転送の前に正しい絶対アドレスでパッチされる。

関連する問題