2011-01-02 3 views
23

Linux Ubuntu 10.xマシンでfastcgiをビルドしようとしています。fcgio.cpp:50:エラー:このスコープで 'EOF'が宣言されていません

私は、次のコマンドを実行します。

は./configure は

を作り、私は次のエラーを取得する:

fcgio.cpp: In destructor 'virtual fcgi_streambuf::~fcgi_streambuf()': 
fcgio.cpp:50: error: 'EOF' was not declared in this scope 
fcgio.cpp: In member function 'virtual int fcgi_streambuf::overflow(int)': 
fcgio.cpp:70: error: 'EOF' was not declared in this scope 
fcgio.cpp:75: error: 'EOF' was not declared in this scope 
fcgio.cpp: In member function 'virtual int fcgi_streambuf::sync()': 
fcgio.cpp:86: error: 'EOF' was not declared in this scope 
fcgio.cpp:87: error: 'EOF' was not declared in this scope 
fcgio.cpp: In member function 'virtual int fcgi_streambuf::underflow()': 
fcgio.cpp:107: error: 'EOF' was not declared in this scope 
make[2]: *** [fcgio.lo] Error 1 
make[2]: Leaving directory `/somepath/fcgi-2.4.0/libfcgi' 
make[1]: *** [all-recursive] Error 1 
make[1]: Leaving directory `/somepath/fcgi-2.4.0' 
make: *** [all] Error 2 

私は他の人が同じ問題を抱えていたしており、これを求めていることに気付きますいろいろなフォーラムでの質問 - しかし、私はまだこの質問/問題に対する答えを見ていない。

誰でもLinuxでfastcgiを構築できましたか? この問題を解決するにはどうすればよいですか?

答えて

42

EOFはCマクロで、fcgio.cppで定義されていないか、何かが定義していないようです。私は最初に#include <stdio.h>をfcgio.cppの先頭に追加しようとします。

+5

これはバグとして報告してはいけませんか? stdioを含めるのを忘れるよりも基本的なものを得るのは難しいようです。 – labyrinth

+0

ヘッダーのライセンスを確認してください。 OpenMarketまたはCopyright 2001 Tux Linux Pengiunの秘密であるため、使用を許可されていないファイルもあります。 – unixman83

+1

これで電子メールをどのように送信するのですか? :問題は、私はパッチがはるかに速く – PicoCreator

14

私はUbuntu 11.10 Linux 64bitで同じ問題を抱えていました。代わりに

次のようにEOFが<stdio.h>で定義されている

--- include/fcgio.h 2012-01-23 15:23:51.136063795 +0000 
+++ include/fcgio.h 2012-01-23 15:22:19.057221383 +0000 
@@ -31,6 +31,7 @@ 
#define FCGIO_H 

#include <iostream> 
+#include <stdio.h> 

#include "fcgiapp.h" 
+0

おかげでものを見つけることができませんでした、た、理由だけで(を#includeすることをお勧めしません言及された他の回答者のように)? – rage

-1

使用-1

#define EOF (-1) 

または(より専門的に)@ paercebalのアドバイスのほとんどに続いて、私は問題を解決し、次のパッチを作成しました、あなたは(あなたのメインの上に次のコードを入れて)、またはあなたのヘッダファイル内の可能性があります

#ifndef EOF 
#define EOF (-1) 
#endif 
+2

あなたはEOFがstdio.hで定義されていることを指摘し、それを作ったとして、それを適用し、(私が間違っている可能性があります) – Brandin