fcgio.cpp:50:错误:在此范围内未声明'EOF'

时间:2021-06-17 06:54:22

I am attempting to build fastcgi on a Linux Ubuntu 10.x machine.

我试图在Linux Ubuntu 10.x机器上构建fastcgi。

I run the following commands:

我运行以下命令:

./configure make

./configure make

and I get the following error:

我收到以下错误:

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

I notice that others have had the same problem and have asked this question in various fora etc - however, I have not as yet, seen an answer to this question/problem.

我注意到其他人也遇到了同样的问题并在各种论坛上提出了这个问题 - 然而,我还没有看到这个问题/问题的答案。

Has anyone ever managed to build fastcgi on Linux? How do I fix this problem?

有没有人设法在Linux上构建fastcgi?我该如何解决这个问题?

3 个解决方案

#1


43  

EOF is a C macro and seems that you do not have it defined in fcgio.cpp or that something has undefined it. I would first try to add #include <stdio.h> to start of fcgio.cpp.

EOF是一个C宏,似乎你没有在fcgio.cpp中定义它,或者某些东西未定义它。我首先尝试添加#include 来启动fcgio.cpp。

#2


14  

I had the same problem on Ubuntu 11.10 Linux 64bit. Following most of @paercebal's advice I created the following patch which resolved the problem:

我在Ubuntu 11.10 Linux 64bit上遇到了同样的问题。按照@ paercebal的大部分建议,我创建了以下补丁来解决问题:

--- 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"

#3


-1  

Use -1 instead

请改用-1代替

EOF is defined in <stdio.h> as follows:

EOF在 中定义如下:

#define EOF (-1)

or (more professionally), you may put the following code above your main() or inside your header file:

或者(更专业),您可以将以下代码放在main()或头文件中:

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

#1


43  

EOF is a C macro and seems that you do not have it defined in fcgio.cpp or that something has undefined it. I would first try to add #include <stdio.h> to start of fcgio.cpp.

EOF是一个C宏,似乎你没有在fcgio.cpp中定义它,或者某些东西未定义它。我首先尝试添加#include 来启动fcgio.cpp。

#2


14  

I had the same problem on Ubuntu 11.10 Linux 64bit. Following most of @paercebal's advice I created the following patch which resolved the problem:

我在Ubuntu 11.10 Linux 64bit上遇到了同样的问题。按照@ paercebal的大部分建议,我创建了以下补丁来解决问题:

--- 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"

#3


-1  

Use -1 instead

请改用-1代替

EOF is defined in <stdio.h> as follows:

EOF在 中定义如下:

#define EOF (-1)

or (more professionally), you may put the following code above your main() or inside your header file:

或者(更专业),您可以将以下代码放在main()或头文件中:

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