• ベストアンサー

複数のソースコードで一つの実行ファイルを作る方法

 アバウトな質問で申し訳ございません。  タイトル通り、複数のC言語ソースコードで一つの 実行ファイルを作成したいのですが可能なのでしょう か?(一つのソースに書き直すのは×。)  ご助言お待ちしています。 なお、ディレクトリ構造は以下のようになっています C:\system\test1\test1.c C:\system\test2\test2.c~ C:\system\test10\test10.c (test1.c~test10.cの機能を持った実行ファイルを 作成したい)

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

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

先の方の回答にあるように,mainが1つで,他のソースはmainで使用される関数などを定義していて,適切に役割分担されているなら(つまり適切にモジュールに分割されているのなら),分割コンパイルをすれば,一つの実行ファイルにすることができます.私の場合は,Cコンパイラーとしてgccを使用しているので,その手順は,次のようになります.コンソール画面から,次のように入力します. gcc -c test1.c gcc -c test2.c ・・・ gcc -c test10.c 以上で夫々のソースのオブジェクトファイルが出来ます.次にこれらのオブジェクトファイルを,次のコマンドでリンクします. gcc -o test test1.o test2.o ・・・ test10.o これで同じディレクトリー内に「test.exe」という実行ファイルが出来ます.次に ./test と入力すれば,test.exeが実行されます. 詳しくは,下記のURLを参考にしてください. なお,手動での入力が面倒であれば,Makefileを作成してmakeすることにより,オブジェクトファイルを作成し,さらにそれらをリンクして実行ファイルを作成するという手順を自動化することもできます.

参考URL:
http://www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/CIP/cprogram7.html
kohei55_1980
質問者

お礼

返事が遅れて申し訳ございません。 メイン関数を一つにし、その他の関数をサブにしてinclude を使ってファイル呼び出しを行ったところうまく いきました。ありがとうございました。

その他の回答 (1)

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

リンカについての質問なら、YESです。 そうではなくて、「それぞれがメイン関数をもつソース・ファイルから1個の実行ファイルを作成したい」ってのなら、 ・まずmain()が衝突するはず ・関数や大域変数が衝突する可能性がある ・ライブラリが競合する可能性がある ――ってところで、Noかと思われます。

kohei55_1980
質問者

お礼

返事が遅くなって申し訳ございません。 今回は「それぞれがメイン関数をもつソース・ファイル から1個の実行ファイルを作成したい」という意図で質問させていただきました。 ご指摘いただいた問題点を解消していきます。 参考になりました。ありがとうございました。

関連するQ&A