• ベストアンサー

Makefile作成時の拡張子.oとは?

main2.o: main.c gcc -o main2.o -c main.c hello2.o: hello.c gcc -o hello2.o -c hello.c test2: main2.o hello2.o gcc -o test2 main2.o hello2.o のようなMakefile作成時の拡張子.oとは何のファイルという意味なのでしょうか? Makefile作成初心者なのでご教授お願いいたします。

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

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

これは main.cからmain2.oというオブジェクトファイルを作りなさい。 hello.cからhello2.oというオブジェクトファイルを作りなさい。 main2.oとhello2.oをリンクしてtest2という実行ファイルを作りなさい って事です。 多分、main.cにはmain()関数があり hello.cには別ファイルとしてmain.c内のソースから呼び出している 外部関数が有ると思います。 それをリンクするのに一端オブジェクトファイルを つくりその後リンクして一つの実行ファイルにしているのです。

0slowlykick0
質問者

お礼

リンクする為にオブジェクトファイルに変換しなくてはならないのですね。機械語に変換した後にリンクさせるという仕組みを理解できたので本当に感謝いたします。 ご回答ありがとうございました。

その他の回答 (2)

  • a-saitoh
  • ベストアンサー率30% (524/1722)
回答No.2

リロケータブル・オブジェクトファイルあるいは単にオブジェクトファイル、のことです。Windowsなんかだと、 .oではなくて .objという拡張をを使ったりします。 なお、現代のMakeでは .cから.oを得る手順はもともと入っているので、いちいちmakefileに書かなくて良いと思いますよ。

0slowlykick0
質問者

お礼

>なお、現代のMakeでは .cから.oを得る手順はもともと入っているので、いちいちmakefileに書かなくて良いと思いますよ。 Makefileについて一応理解できてきたのでご回答いただいた仕組みについて勉強したいと思います。 ご回答ありがとうございました。

  • OsieteG00
  • ベストアンサー率35% (777/2173)
回答No.1

オブジェクトファイルの事。 コンパイルという作業で機械語に変換をしますが、一旦オブジェクトファイルという形式にします。この後に実行用ライブラリを結合(リンク)して実行可能形式(exeやcom等)にします。

参考URL:
http://lagendra.s.kanazawa-u.ac.jp/ogurisu/manuals/make-intro/remark-object.html
0slowlykick0
質問者

お礼

意味が理解できました。どうもありがとうございます。機械語に変換したというオブジェクトファイルのことなのですね。ご回答ありがとうございます。

関連するQ&A