2013年11月6日 星期三

[程式] 如何在Ubuntu上安裝FastCGI的開發環境

稍早,從FastCGI的網站上取得Development Kit,準備開始安裝並且開發FastCGI APP,按照Development Guide,應該要

  • cd fcgi/
  • ./configure
  • make 
  • make install

不過在make的步驟就出現以下的錯誤訊息:

 *** Warning: This library needs some functionality provided by -lnsl.  
 *** I have the capability to make that library automatically link in when  
 *** you link to this library. But I can only do this if you have a  
 *** shared version of the library, which you do not appear to have.  
 *** The inter-library dependencies that have been dropped here will be  
 *** automatically added whenever a program is linked with this library  
 *** or is declared to -dlopen it.  
 gcc -shared libfcgi_la-fcgiapp.lo libfcgi_la-fcgi_stdio.lo libfcgi_la-os_unix.lo  -Wl,-soname -Wl,libfcgi.so.0 -o .libs/libfcgi.so.0.0.0  
 (cd .libs && rm -f libfcgi.so.0 && ln -s libfcgi.so.0.0.0 libfcgi.so.0)  
 (cd .libs && rm -f libfcgi.so && ln -s libfcgi.so.0.0.0 libfcgi.so)  
 ar cru .libs/libfcgi.a libfcgi_la-fcgiapp.o libfcgi_la-fcgi_stdio.o libfcgi_la-os_unix.o   
 ranlib .libs/libfcgi.a  
 creating libfcgi.la  
 (cd .libs && rm -f libfcgi.la && ln -s ../libfcgi.la libfcgi.la)  
 source='fcgio.cpp' object='fcgio.lo' libtool=yes \  
   depfile='.deps/fcgio.Plo' tmpdepfile='.deps/fcgio.TPlo' \  
   depmode=gcc3 /bin/sh ../depcomp \  
   /bin/sh ../libtool --mode=compile g++ -DHAVE_CONFIG_H -I. -I. -I..  -I../include -g -O2 -c -o fcgio.lo `test -f fcgio.cpp || echo './'`fcgio.cpp  
 rm -f .libs/fcgio.lo  
 g++ -DHAVE_CONFIG_H -I. -I. -I.. -I../include -g -O2 -c fcgio.cpp -MT fcgio.lo -MD -MP -MF .deps/fcgio.TPlo -fPIC -DPIC -o .libs/fcgio.lo  
 fcgio.cpp: In destructor 'virtual fcgi_streambuf::~fcgi_streambuf()':  
 fcgio.cpp:50:14: error: 'EOF' was not declared in this scope  
 fcgio.cpp: In member function 'virtual int fcgi_streambuf::overflow(int)':  
 fcgio.cpp:70:72: error: 'EOF' was not declared in this scope  
 fcgio.cpp:75:14: error: 'EOF' was not declared in this scope  
 fcgio.cpp: In member function 'virtual int fcgi_streambuf::sync()':  
 fcgio.cpp:86:18: error: 'EOF' was not declared in this scope  
 fcgio.cpp:87:41: error: 'EOF' was not declared in this scope  
 fcgio.cpp: In member function 'virtual int fcgi_streambuf::underflow()':  
 fcgio.cpp:107:35: error: 'EOF' was not declared in this scope  
 make[2]: *** [fcgio.lo] Error 1  
 make[2]: Leaving directory `/home/Downloads/fcgi-2.4.0/libfcgi'  
 make[1]: *** [all-recursive] Error 1  
 make[1]: Leaving directory `/home/Downloads/fcgi-2.4.0'  
 make: *** [all] Error 2  

解決方法也很簡單,只需要打開libfcgi/fcgio.cpp,在最上面加上#include <stdio.h>,然後重新make就可以啦。
張貼留言