C言語 CGIの一括コンパイル方法とは?

このQ&Aのポイント
  • 10年前に作成したゲームの復活を考えています。C言語で作成されたゲームを再開するためにはCGIプログラムをコンパイルする必要があります。
  • 他のマシンでコンパイルしたCGIプログラムをそのまま使用することはできず、すべてのプログラムを再度コンパイルする必要があります。
  • 178個のCGIプログラムがあり、ファイルは40個のディレクトリに分かれて保存されています。個別にコンパイルすると1か月以上かかる見込みです。一括でコンパイルする方法を探しています。
回答を見る
  • ベストアンサー

C言語CGIの一括コンパイルの方法

10年くらい前に作ったゲームの復活を考えています。 当時ledhat7.1上で展開していたゲームをSentOS上で再開します。 ゲームはC言語で出来ていますが、作った本人が手を付けることができません。 そこで、当方が10年前の姿にまでは持っていこうと考えています。 いろいろ調べていくと、 「C言語によるCGIプログラムは、それを動かそうとする サーバー上でソースファイルをコンパイルする必要があります。 他のマシンでコンパイルしたCGIプログラムをそのまま持って来ても、動かない 可能性の方が大きいです。ご注意下さい。」 という記述を見つけました。 全部、コンパイルし直す必要がありそうです。 当方の現在の環境は下記の通りです。 サーバー  自宅にあり。直接接続可能 もちろんSSHも可 CGI の数 178個 ディレクトリは40個くらいに分かれている コンパイル前のC言語ファイルは「.c ファイル」として 保存されている ひとつひとつコンパイルしていったのでは、1ケ月くらい 掛かりそうです。 一括コンパイルのような方法はありませんでしょうか? 一括でなくとも、ディレクトリごとでも構いません。 宜しくお願い致します。

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

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

一般的な方法はありません。 それぞれのファイルがどんな関係になっているかが不明です。 全部で一つの実行ファイルになるのか、それぞれが実行ファイルになるのか、いくつかずつまとめて複数の実行ファイルになるのか、それぞれによってコンパイルのやり方が違います。 例えば、 a.c,b.c,c.cの3つがあったとして ・それぞれから a.cgi b.cgi c.cgi の3つの実行ファイルを作る →gcc -o a.cgi a.c; gcc -o b.cgi b.c ; gcc -o c.cgi c.c ・全てのコンパイル結果をリンクして d.cgiを作る →gcc -o d.cgi a.c b.c c.c ・a.cとb.cから a.cgi, c.cから c.cgi を作る →gcc -o a.cgi a.c b.c ; gcc -o c.cgi c.c ・a.cとb.cから a.cgi, c.cとb.cgiから c.cgi を作る →gcc -c b.c ; gcc -o a.cgi a.c b.o ; gcc -o c.cgi c.c b.o .... 他にもライブラリの指定等の各種オプションの指定も違うこともあります。 なので、普通は、一括コンパイル用のシェルスクリプトや、makeコマンドで一括処理するための Makefile (または、環境や設定に合せてMakefileを作成するための configureスクリプト)を用意します。 または、コンパイルするための情報が書いてあるファイル(READMEやINSTALL等)を用意します。 それらのファイルは無いでしょうか? 逆に言えば、これらの情報が無ければ、コンパイルは無理です。ソースを解析して、コンパイル方法を推測する必要があります

tajix14
質問者

お礼

もう少し良く確認したところ、mk_file のファイルが各ディレクトリ毎にありました。これを使えばいいのですね。 有難うございました。 大変助かりました。 あとは、調べれば自分で出来るかと思います。 有難うござました。

tajix14
質問者

補足

有難うございます。 確認したところ、  utils ディレクトリの中に「makefileファイル」「mk_info =C言語ソース & mk_infoファイル」「configure.csh ファイル」を見つけました。 makefileファイルは ************************************** # all: mk_info # mk_info: mk_info.c cc -g mk_info.c -o mk_info *************************************** となっています。 mk_info =C言語ソースを見ると、 どのC言語ファイルをどうするなどの指示文書にはなっていないファイルでした。 このファイルで一括変更したのではないかもしれません。 .cファイルについてですが、xxx.c に対応するcgiであるxxx.ccgiのように、178個全てにおいて、.c ファイルと同じ名前のcgiファイルがあります。 従い、 例えば、 a.c,b.c,c.cの3つがあったとして ・それぞれから a.cgi b.cgi c.cgi の3つの実行ファイルを作る →gcc -o a.cgi a.c; gcc -o b.cgi b.c ; gcc -o c.cgi c.c の例で問題ないと考えますがいかがでしょうか? 他にもライブラリの指定等の各種オプションの指定も違うこともあります。については、さすがに分かりません。 従来のものとは別のディレクトリに用意するため、 万一動かなかったとしても 大元を壊すことにはなりません。

関連するQ&A

  • コンパイルされたCGI(C言語)を別サーバで動かす

    C言語にて簡単なCGIを作成しました。 gcc -o xxx.cgi xxx.c コンパイルをするとそのサーバでは問題なく動きます。 コンパイルしたCGIファイルを同じ環境の別サーバに 持っていくとInternalServerErrorとなり実行できません。 パーミッションもディレクトリ構造もApacheの設定も サーバ名、IPアドレスを除いて同じ設定です。 これは動作させるサーバ毎にコンパイルする必要が あるものなのでしょうか?もしサーバ毎にコンパイルする 必要があるのであればそれはどうしてなのでしょうか? もしくはなにか間違っているのでしょうか? お手数ですが、お分かりになる方、お教えください。 よろしくお願いします。

    • ベストアンサー
    • CGI
  • C言語でCGI

    C言語でCGIをやるにはサーバがtelnetを使えないと絶対だめですか? たとえばローカルのLINUX環境でコンパイルしてそれをFTPでサーバにアップロードする方法では出来ないでしょうか?何か方法があれば教えてください。

    • ベストアンサー
    • CGI
  • C言語で作ったプログラムをCGIで動かすには

    C言語で作ったプログラムをCGIで動かすにはどうすればいいのでしょうか? サーバ側になにをアップし、ブラウザ側で何を呼び出せばいいのかわかりません。 EXEファイルの拡張子をcgiにしても ダウンロードされるだけだったし(当たり前ですか?)。 ちなみにサーバは会社のサーバを使っていて、CGIも使えるはずです。 よろしくお願いします。

    • ベストアンサー
    • CGI
  • C言語とC++言語

    C言語でコンパイルできC++でコンパイルできないプログラムとその逆でC++でコンパイルできC言語でコンパイルできないプログラムを教えてください。よろしく

  • windows上でC言語のCGI環境について

    sea_clear_sky8です。 Windows上でC言語によるCGIを使える環境を作りたいです。 <環境> OS Windows98SE APACHE1.3 Boland BCC55 コンパイラ  APACHE1.3とBoland BCC55 コンパイラはインストールしてあります。 C言語の環境はPHPとPerlの環境と共存できるのでしょうか? PHPとPERLの環境も作ってあります。 C言語でも、PERLみたいに、コンパイルをし、ブラウザに出力する環境が つくれるのでしょうか? httped confのファイルに次を追加すると LoadModule cgi_module module/mod_cgi.so Cannot load c:/program files/apache group/apache/module/mod_cgi.so into server (1157) このアプリケーションの実行に 必要なライブラリ ファイルのうちの 1 つが見つかりません。: と表示されます。 Yahoo,Google、MSN等で調べましたが、解決方法がみつかりませんでした。 Windows上でのC言語によるCGIの作り方をご教授願います。 よろしくお願いします。

    • 締切済み
    • CGI
  • c言語のコンパイルについて教えてください。

    Unixとwindows98を使用しています。 #include<stdio.h> #include<math.h>    (以下 省略)  と、c言語のプログラムをして、コンパイルを、gcc ファイル名.c  と するのでしょうか。 cl ファイル名 -lm   とするのでしょうか。  どうすれば良いか、教えてください。 説明が下手で申し訳ございません。 お答えを待ってます。  

  • C言語について

    パソコン系の就職に就きたく、C言語について勉強したいと思い、 本を買い勉強することにしました。 しかし、最初の初歩でつまずいてしまいました。 プログラムがコンパイル出来ないのです… ソースファイルを保存したディレクトリに移動してとかいてあるのですが何を移動するのでしょうか? コマンドプロントを使えません。 助けてください…

  • C言語のコンパイルの仕方が分かりません

    大学でプログラミングの課題がでたので家でもできるようにVisual C++をインストールしたのですがコンパイルの仕方が分かりません。 授業でテラパッドを利用して作ったプログラム ~.cファイルを cl ~.cで開こうとしても「c1 : fatal error C1083: ソース ファイルを開けません。'~.c': No such file or directory」とコマンドプロントに表示されてできません。 誰か教えてください。

  • C言語でCGIの生成?

    はじめまして。 今、C言語でCGIを利用したページを制作しようと思っています。 まだ勉強を始めたばかりなので、C言語でCGIが作れるのかと疑問に思っています。 Visual C++コンパイラを使用しているのですが、C言語で書いたものをCGIとして動作させるにはどのようにすればいいでしょうか。 初心者なので出来るだけ詳しくご返答ください。 ちなみに、簡易サーバーとしてApacheを使用しています。

    • 締切済み
    • CGI
  • C言語のコンパイルの設定で詰まっています。

    エディタ:Notepad++ notepad++のNppExecというプラグインを使い、いろいろなサイトとファイルを参考に以下のコマンドを記述しました。 NPP_SAVE CD $(CURRENT_DIRECTORY) C:\borland\bcc55\Bin\bcc32.exe -I -L "$(FILE_NAME)" Console画面には、 Current directory: C:\[フォルダ名] Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland [ファイル名].c: Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland ================ READY ================ と表示されました。 私には何をやっている文章なのかよくわからないのですが、 .cのファイルはちゃんと保存され、.exe .tds .obj のファイルができているので、コンパイルは成功していると思います。 そこで、 コンパイルしたhogehoge.exeなどをnotepad++上で実行させるためには、どのようなコマンドを記述すればいいのでしょうか? コマンドプロンプトをにbcc32などと記述してコンパイルするのは、面倒に感じるのでどうしてもNotepad上でexeを実行させたいのです。 他のテキストエディタを使う、というのは考えていません。 当方、プログラミング自体、C言語でやっとfor文を覚えたばかりの初心者なので、できるだけわかりやすい言葉で解答をいただけると幸いです。お願いします。

専門家に質問してみよう