2012-01-14 16 views
0

以下は私のC++コードと私の設定ファイルです。nginxとC++でfastcgiを動作させようとしています

私はspawn-fcgi -a120.0.0.1 -p9000 -n ./rtb.o

を実行したときに、私はここでは、このエラーに

spawn-fcgi: exec failed: Exec format error 

を取得するには、私はそうrtb.o

#include "fcgi_stdio.h" 
#include <stdlib.h> 
using namespace std; 
int main() 
    { 
     int count = 1; 
     while(FCGI_Accept() >= 0) 
      printf("Content-type: text/html\r\n" 
       "\r\n" 
       "<title>FastCGI Hello!</title>" 
       "<h1>FastCGI Hello!</h1>" 
       "Request number %d running on host \n", 
        ++count); 
     return 0; 
    } 

として遵守し、私のC++コードで、私は間違って何をしましたか?

+0

注:sudo spawn-fcgi -d/var/www/-f /var/www/rtb.o -a 127.0.0.1 -p 9000これはうまく動作し、出力spawn-fcgi:child spawned successfully:PID :../src/rtb.cpp の呼び出し::GCC C++コンパイラ G ++ 3671 –

答えて

0

rtb.oというプログラムを実行しようとしていますか?これはオブジェクトファイルか実行可能ファイルですか?あなたはあなたのプログラムをどのようにコンパイルするかを教えてください。

g++ -c rtb.cpp 

あなたがオブジェクトファイルを取得し、それをリンクして作業プログラムを取得する必要がある場合。 ./rtb.oを使用して端末から実行してみてください。それは、同じメッセージを出力した場合は、オブジェクトファイルを持って、代わりにこのような何かをしようとする必要がありました:

g++ -o rtb rtb.cpp 

は、あなたが(-lオプションを使用)リンクするときFCGIライブラリへの参照を追加することを忘れないでください。

+0

私は、プロジェクトのRTB **** のコンフィギュレーションのデバッグの ****ビルドをビルドするとき、これはoutpoutでは、すべての ビルのファイルを作成します-I/usr/local/include/-O0 -g3 -Wall -c -fmessage-length = 0 -MMD -MP -MF "src/rtb.d" -MT "src/rtb.d" -o "src/rtb.o "" ../src/rtb.cpp " 完成建築物:../src/rtb.cpp ビルディングターゲット:rtb 呼び出し:GCC C++リンカー g ++ -L/usr/local/include/-lfcgi ++ -o "rtb" ./src/rtb.o 完成したビルドターゲット:rtb –

+0

これは 'rtb.o'ではなく' rtb'という名前のプログラムをコンパイルすると言います。 'rtb.o'ファイルは、コンパイル時に生成される中間ファイルです。あなたの質問のコマンドは正確ですか?本当に '。/ rtb.o'を実行しようとしていますか? –

+0

ありがとう! g ++ -L/usr/local/include/-lfcgi ++ -o rtb rtb.cpp –

関連する問題