• ベストアンサー

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

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

  • CGI
  • 回答数3
  • ありがとう数0

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

  • ベストアンサー
  • selenity
  • ベストアンサー率41% (324/772)
回答No.2

厳密に言えば、サーバごとに再コンパイルが必要です。 同じバージョンのOSでも、インストール状態によってはリンクするライブラリがインストールされない場合もありますので。

その他の回答 (2)

  • ysk6406
  • ベストアンサー率40% (237/589)
回答No.3

サーバが Apache ということで、Internal Server Error になった時には、必ずログファイルにその理由が残されているはずですが、それはチェックされましたか? そのメッセージを書いていただければ、何かお役に立てるかも知れません。 多分、OS(特にDLL)のバージョンの違い等により、ランタイムエラーが起こっているのだとは思いますが…

polco2001
質問者

補足

すいません。Apacheのerror_logは以下のとおりです。 [Wed Nov 28 18:27:24 2001] [error] [client xxx.xxx.xxx.xxx] Premature end of script headers: /usr/local/apache/cgi-bin/xxx.cgi ソースはサンプルソースを使いました。 #include <stdio.h> #include <stdlib.h> char *getenvs(char *str){ char *ev; ev = getenv(str); if( ev == NULL ){ ev = "none"; } return(ev); } main(){ printf("Content-type: text/plain\n\n"); printf("SERVER_SOFTWARE = %s \n",getenvs("SERVER_SOFTWARE")); } 上記ソースを gcc -o xxx.cgi xxx.c でコンパイルしました。 OSはLinuxOSでディストリビュータ、カーネル共に同じバージョンです。 OSのバージョンが同じであればコンパイル後のCGIを別サーバでも動作するの ものなのでしょうか? 大変お手数ですが、ご教授ください。

  • ranx
  • ベストアンサー率24% (357/1463)
回答No.1

> 動作させるサーバ毎にコンパイルする必要があるものなのでしょうか? 一般的には「OS毎に」でしょうね。

関連するQ&A

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

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

  • 独習C言語のコンパイル

    C言語初心者です。 他の方が質問されてて、 その回答通りにコンパイルを実施したのですが、 何度やっても同様の現象となり、そこからなかなか進めません。 C:\TYC4TH>gcc C:\TYC4TH\test.c -c test.exe gcc: test.exe: No such file or directory C:\TYC4TH>dir 2008/05/10 16:29 120 test.c 2008/05/10 16:32 590 test.o となり、なぜかtest.oが作成されます。 申し訳ないですが、ご教授願います。

  • C言語で作成したCGIにて「Internal Server Error」

    こんばんは。CGIについて質問させて下さい。 現象: C言語でCGIを作成し、ローカルで動作しているApacheで 動作確認をしようとしたところ、 「Internal Server Error」が出てしまいました。 質問: 上記の現象が起こったのですが、C言語でCGIを実行するには なにが足りないでしょうか? 環境: OS:WindowsXP Webサーバ:Apache 2.0.61 Cコンパイラ:gcc 3.4.4(cygwin) 状態: ○「http://localhost:8080/」にアクセスすると「あなたの予想に反して・・・」画面は見れます。 ○「http://localhost:8080/cgi-bin/test.cgi」にアクセスすると、「Internal Server Error」が表示されます。 ○httpd.confの設定値(デフォルトから修正した部分) ・ServerName 127.0.0.1:8080 ・<Directory "C:/Program Files/Apache Group/Apache2/cgi-bin">内 Options none → Options ExecCGI ・#AddHandler cgi-script .cgi → AddHandler cgi-script .cgi ○Apacheのerror.log ~[error] [client 127.0.0.1] Premature end of script headers: test.cgi ○test.cgiのコンパイル前ソース ---ここから #include <stdio.h> int main(void){  printf("Content-Type: text/html\n\n");  printf("<html><body>Hello, World!</body></html>");  return 0; } ---ここまで ○test.cgiはcygwinにて標準出力を確認済み。 ・・・ちなみにperlでCGIを作成すると表示されます。 (ActivePerlインストール済み) perl側のソース ---ここから #! c:/perl/bin/perl print "Content-Type: text/html\n\n"; print "<html><body>"; print "Hello, CGI!"; print "</body></html>" ---ここまで なにかおかしな点がございましたらご指摘をお願い致します。

    • ベストアンサー
    • CGI
  • c言語について、質問します。

    c言語について、質問します。 環境設定を行いましたが、 コンパイルが何度、やってもできません。 c:?source>gcc -o sample sample.c と入力すると、 gcc:installation problem, cannot exec cc1':No such file or directory とでます。 成功したら、このような文字はでないとかいてあるのですが、どうすればよろしいですか?

  • 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言語でCGI

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

    • ベストアンサー
    • CGI
  • C言語でCGIの生成?

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

    • 締切済み
    • CGI
  • Cのコンパイル

    初歩的なことですいません。 Fedora Core5 のGNOME端末でC言語をコンパイルしようとしているのですが、gcc comand not find と返ってきて、コンパイルできません。ls でファイルは表示されます。gcc ファイル名.c と入力しています。どうすればコンパイルできるか教えてください。

  • Cygwinでコンパイルできません。

    CygwinをすべてDefaultでインストールしました。 テキストエディタとしてTeraPadを利用しています。 テラパッドでtest.cというファイルをつくり、 gcc -o test test.c でコンパイルしたのですが gcc:test.c:No such file or directory gcc:no input files と表示されます。 正常にコンパイルするにはどうしたらいいのでしょうか? 自分はC言語について勉強したばかりでくわしくないので、この質問を書いていて言葉足らずなところがあり説明不十分かもしれませんが、よろしくお願いします。

  • Mac OS X Lionで,C言語コンパイル

    今まで普通にターミナルで.cのファイルをgcc -oでコンパイルしていましたが, -bash:gcc: command not found みたいになってコンパイルできません. サイトとかで,lionにしたら,gccでコンパイルできなくなるみたいに 書いてたのですが,どうやったら前のようにコンパイルできますか? だれか助けてください. お願いします.

専門家に質問してみよう