• ベストアンサー

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

 アバウトな質問で申し訳ございません。  タイトル通り、複数の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

  • 実行ファイルからソースはみれる?

    C言語の実行ファイルとDATファイル(?)という二つがあります。 それで実行できるみたいですが、実行ファイルからソースファイルを見ることはできないのでしょうか?

  • Visual C++2008でソースコードの保存先を指定するには?

    複数のプログラマを集めてプログラムを作成したいのですが、VisualStudioやEclipse等の開発環境が混在していて、ソースコードの管理に困っています。 VisualStudioを使用しているのですが、普通にプロジェクトを生成するとVisualStudioの設定ファイルとソースコードが一緒に保存されます。EclipseユーザーにVisualStudioの設定ファイルまで渡す意味がないので、ソースコードだけが保存されたディレクトリと設定ファイルを分離したいのです。 ディレクトリ構造としては、 <VSの設定ファイルが保存されたディレクトリ> | |---VSの設定ファイル各種 |---<ソースコードのみが保存されたディレクトリ>---ソースコード もしくは <プログラミングに使用するデータを保存するディレクトリ> | |-<VSの設定ファイルのみを保存したディレクトリ> |-<ソースコードのみを保存したディレクトリ> こんな感じです。 どこを設定すべきでしょうか?

  • 複数のソースからなるプログラムの実行

    windowsで、Cを勉強中のプログラミング初心者です。 複雑なプログラムっていくつかの名前で、複数のソースから成っていますよね。そういうプログラムを動かしたいのですが、どうやってコンパイル、実行したら良いのですか? 以下のサイトのサンプルを、ソースコードから動かしたいと思っています。 http://www.oreilly.co.jp/books/9784873113395/download.html

  • 実行ファイルと実行モジュールについて。

    実行ファイルは、例えばソースコードをコンパイルしたものを実行ファイルと呼び、実行モジュールは、例えば、ソースコードをアセンブル、 コンパイルインタープリタの複数のファイル群の事でしょうか?で、違いは、ファイルは 1つか複数の違いという事でしょうか?教えていただけないでしょうか?すみません。

  • eclipse+CDTで実行ファイルとソースが連携しない

    このような質問サイトに投稿するのは初めてなので 至らない点がありましたら、ご指摘ください。 現在以下の環境でcのソースのデバッグを試みています。 redhat9 eclipse3.3 CDT4.0 gdb6.6 gcc4.1.1 ・空のCプロジェクトをつくりソースをインポート ・makefileは既存のものを使用 ・デバッグモードでビルド ・バイナリを作成(更新時間にて新規作成を確認済み) ・必要な箇所にブレークポイントを設定 ・デバッグモードで実行 コンソールにブレークポイントをはったソース(例えばtest.c)について 以下のメッセージが表示されます。 No source file named test.c 実行ファイルとソースが連携しないため、ステップ実行でのデバッグが できない状態です。 F8を押すと実行ファイルは実行されます。 ファイルのパスを通すのかなと、「source lookup path」にフォルダを 指定してみましたが、特に変わらずでした。 上記問題について、何かご存知でしたらご教授ください。 よろしくお願いいたします。

  • C言語のソースコードの書き方

    C言語のソースコードの書き方に関する質問です。 0を5個と1を4個の、合わせて9個の数字を並べて出来上がる数列のパターン(126通り)を全て羅列させるプログラムを作りたいと考えていますが、そのためにどういった方針を立ててソースコードを書けばよいかが分かりません。 どういった構造かだけでも構いませんので、教えて頂けると幸いです。 よろしくお願いします。

  • staticな関数をテストする方法について

    C言語やC++言語でstaticなグローバル関数を作成することがあります。 これをテストコードから呼び出せるようにするにはどうしたらいいでしょうか。 元のソースには、できるだけ変更を加えたくありません 今はテスト対象のソースファイルを、 テストが書かれているソースファイルでincludeすることで呼び出せるようにしていますが 他にいい方法はないでしょうか

  • 複数ファイルのビルド方法(緊急)

    19歳のアフィリエイターです。 現在CやCPPファイルを使ってゲームマシンのエミュレーターの開発を行っています。 プログラミングの方は完成したのですが、 2階層までのディレクトリからなる複数のCやCPPファイルから、 肝心のEXEファイル(実行ファイル)を作成するビルドの方法が、分からなくて物凄く困っています。 インターネットでいくら探し回っても、一向に複数のファイルをビルドする方法が分かりません。 どなたか複数のファイルをビルドして、実行ファイルを作成する手立てを教えてください。 開発にはMicrosoft Visual C++ 2010とテラパッドを使っています。

  • JAVA内で複数のファイルを削除したい

    仕事で必要にせまられてしまい、プログラムを 書いているのですが、わからない部分があるため教えてください。 ディレクトリ内のファイルをすべて削除したいと思っています。 ファイル1つだけを削除はできましたが、ファイル全てを一度に削除する方法はありますか。 <略> FILE file = new File("C:\\test","test.txt"); file.delete(); ...... ファイル名にワイルドカードを指定したのですが削除はできませんでした。こういったやり方は可能ですか。また他のやり方があれば教えてください。 C言語だとシステムコマンドを直接使用できる指定可能なやり方があったと思うのですが、JAVA内でもプログラム内でDOSコマンドを実行させるようなやり方がないでしょうか。

    • ベストアンサー
    • Java
  • VBAのSHELLを用いてEXEファイルを起動したものの、微妙にうまくいかない

    エクセルのVBAのshellを用いて、exeファイルを起動させてました。 exeファイルはCを用いたシンプルなもので、テキストファイルを作成します。(ソースは下記参照) C:\testのディレクトリにエクセルファイルを作成し、 Shell "C:\test\test.exe" を実行させたところ、ファイルはC:\testのディレクトリに出来ずに、マイドキュメントに出来ました。 このexeファイルを直接ダブルクリックしたときは、C:\testのディレクトリにテキストファイルが作成されます。 ダブルクリックしたときと同じように、C:\testのディレクトリにテキストファイルを作成する方法があれが教えてください。 よろしくおねがいします。 (ソース、hello.txtというファイルをつくり、hello!を書く) main( ) { FILE *fp; /* ファイルポインタ */ fp = fopen( "hello.txt", "w"); fprintf(fp,"hello!\n"); fclose(fp); return 0; }

専門家に質問してみよう