• ベストアンサー

リンカーとは何ですか?

C言語入門書に ※C言語をマシン語に変換する時は、コンパイラだけでなくリンカーというツールも見えないところで作動しているのですが・・・存在は意識しなくてもかまいません。 とあります。 リンカーの役割とコンパイラとの関係を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

プログラムは、複数のファイルに分割できますよね? コンパイルすると、これらは、それぞれ実行コード(再配置可能な=まだ場所が決まっていないコード)が作られます。 その後、これら複数のコードを、関数などを相互に呼んだり呼ばれたり出来るように、また、他のモジュール(コードの単位)の変数などを参照できるように、場所的なものを整合させる必要があります。これがリンカ。

その他の回答 (1)

  • Visar
  • ベストアンサー率19% (17/87)
回答No.1

まず、クグる事が肝要です。

参考URL:
http://e-words.jp/w/E383AAE383B3E382AB.html

関連するQ&A

  • C言語のコンパイラ、リンカ

    はじめまして。 独学でC言語の勉強をしています。 そこで、実際に簡単なプログラミングをしてみたいのですが、フリーのコンパイラ、リンカはあるでしょうか? 知っている方がいました宜しくお願いします。

  • シンボル、リンカーの(ソフトウエアにおける)解釈

    題名の件についてご教授、指摘をください。 何卒よろしくお願いいたします。 1_シンボルについて 理解に苦しんでおります。 プログラミング上での形が数字なのか文字列なのか? 役割やどのプログラムと相関しているのか? 2_リンカーについて 解釈が合っているかを確認したいです。 ソースコードからコンパイルされたオブジェクトやライブラリを結合し1つのマシン語を生成するプログラム。 ↓下記を参考にしました。 情報工学やソフトウェア工学で、データに含まれる一塊の記号や、プログラミングで用いられる名前を指して用いられる。例えばコンパイラはソースコードからオブジェクトコードを生成する際、機能的な「実体」を構成する一連の機械語命令に加え、それを指す「シンボル」をも生成する。これらのシンボルを用いて、リンカが複数のモジュールの間の関係を構成する。近年のコンパイラが複雑な方法を用いてシンボルを生成することに関しては名前修飾を参照されたい。 http://ja.wikipedia.org/wiki/%E3%82%B7%E3%83%B3%E3%83%9C%E3%83%AB

  • コンパイラーとアセンブラの違い

     今晩は。  コンパイラーとアセンブラとは何がどう違うのでしょうか。 またコンパイラー、アセンブラは、その後に更に機械語に変換されるとききましたが、なぜ一気にソースコード から機械語に変換しないのですか。  他にCalsという言語もあると聞きましたが、この言語も機械語とは違うと聞きました、とするとそもそもこの 言語自体の役割は何なんでしょう。

  • プログラミングを突き詰めて考えると難しい

    プログラミング(C.C++)を勉強しているのですが、プログラムが実行されるまでの流れの”中身”が分かりません。 ■C言語で書いたプログラム ↓ ■コンパイラ ↓ ■マシン語 ↓ ■CPU だと思うのですが中でどのように処理されているかがよく分かりません。 あと、「マシン語によるプログラミングでは、基本的にCPUが直接解釈できるマシンコードと一対一に対応するニーモニックを使用する。この後アセンブラによってニーモニックをマシンコードに変換し、CPUで実行できるようにする。」と書いてるあったのですが、C言語との違いは何なのでしょうか?どちらもマシンコードに変換するのでおなじプログラムだと思うのですが。 色々調べているうちにこれを理解していくにはかなり難しく、マシン語がどのようにCPUで処理されて結果としてでてくるまでの過程など勉強しなければいけない気がするのですが、わかりやすい参考になる本やサイトがれば教えて頂けないでしょうか

  • リンカのコマンドライン

    こんにちは。 C言語の勉強をしているのですが、リンカができなくて困っています。 環境: OS:windows2000 コンパイラ:Borland C++ 5.5 (他に必要な環境があれば、ご教授ください) まず、main()関数と作成した関数をコンパイルします。 Borland C++ 5.5のヘルプを参照して、 「bcc32 main.obj make.obj pro.lib」 これでリンクしようとしたのですが、 「ファイル pro.libが開けません」 とプロンプトに出力されます。 (main()関数→main.obj 作成した関数→make.obj 関数プロトタイプ宣言するファイル→pro.lib)  保存は(main.obj→main.cpp、make.obj→make.cpp、pro.lib→pro.h) と以上のようになっております。 コーディングミスは参考書を散々読み直したので、間違いないと思っております。 ただ、参考書が間違っていたら、取り付く島もありません。 どうぞ、お願いいたします。

  • C言語やC++、VC++について

    C言語やC++、VC++について C言語やC++、VC++などはIL コードと呼ばれる中間言語が作成されるのでしょうか?それともコンパイラーがネイティブコードに変換されるのでしょうか?でもネイティブコードに変換すると機械語なので互換性がないのではないのでしょうか?それなのになぜ他のwindowsのパソコンで実行できるのはなぜなのでしょうか?そこら辺はどうなっているのでしょうか?

  • Web関連の勉強方法

    私は長いことC/C++を使った組み込み関係のソフトを作ってきました。 社内的にもWeb関係の知識が必要となり勉強がしたいのですが 「ハテ?なにから手をつけたらよいのか?」こまっています。 C/C++を勉強した時は、フリーのコンパイラやらを自宅のPCに セットアップして「入門C言語」などで勉強したのですが Web関連は、どうも広すぎるようで入り口がどこだか判らないのです。 みなさんはどうやって勉強されましたか?

  • プログラム言語って何があるの?

    私、プログラム言語について調べています。 ウィキペディアをみてもたくさんあって、そこからまたリンクがたくさんあってどこでどのように区切っていいのか分かりません。そこで皆さんに質問したいのですが、プログラム言語はどのようなものがありますか? 大まかにプログラム言語の総称があってその次に (1)機械語(マシン語) (2)アセンブラ言語 高水準言語これの中に (3)インタプリタ言語 (4)コンパイラ言語がありますが、 (1)~(4)のそれぞれの詳細を教えてください。例:BASIC、C等 またこの枠に入らないプログラム言語がありましたら教えてください。 とってもマイナーなものでも構いません。出来ればURL欲しいです。 お願いします。m(_ _)m

  • PIC用のフリーCコンパイラはありますか?

    PICでプログラムを組みたくて、本屋で 「C言語によるPICプログラミング入門」 を買ってきました。 さて早速取り組もうと思ったのですが、いきなりCコンパイラは有料(高価)であるとのこと・・・T-T そこでフリーのCコンパイラについてご存知の方がいらっしゃいましたら紹介して頂けないでしょうか? 以上よろしくお願いします。

  • CとFortranのコードを併用する方法

    昔からあったと思いますが、最近CとFortranを併用することを考えています。片方の言語で関数とかサブルーチンを作っておいてコンパイルしてオブジェクトをだけを作成し、もう片方の言語でそれを呼び出してコンパイル時にリンクして使用するという風に考えています。コンパイラの組み合わせが何でもいいとは思えないのですが、どのようにするものでしょうか。あるいはコンパイラ以外のツールが必要だとか。コンパイラは両言語ともGNU, intelなど提供元をそろえる必要があるとか、そういうことになるのでしょうか。よろしくお願いします。

専門家に質問してみよう