Chinaunix首页 | 论坛 | 博客
  • 博客访问: 186682
  • 博文数量: 71
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 210
  • 用 户 组: 普通用户
  • 注册时间: 2013-01-13 14:49
文章分类
文章存档

2017年(1)

2015年(5)

2014年(10)

2013年(55)

我的朋友

分类: LINUX

2013-10-18 20:31:57

移植boa的一大把,我就不罗嗦了,这个就挺好:

 

实际上boa太老了,据说要用2.95.3的才好用,但现在编译器都不断更新,就是boa断货,他不更新,也没办法啊,是不是作者不想把成果公开了?呵呵。因此会出现至少2个错误,请看:


1、configure: error: can not run test program while cross compiling

解决方法:参考这个哥们写的,通用:


  1. 在交叉编译的时候总是使用configure --host=arm-linux 嘿嘿但是在CONFIGURE中有很多的测试程序是不可以在HOST上运行的就会出现: error: cannot run test program while cross compiling  
  2. 类似的错误,可以使用CACHEFILE解决这个问题,还要谢谢ABSURD兄的文章给我的指导。  
  3. 我是这样解决的第一步:记录下错误的地方如:checking abstract socket namespace... configure: error: cannot run test program while cross compiling  
  4. 注意到abstract socket namespace在configure中查找abstract socket可以看到类似这样的结构  
  5. echo "$as_me:$LINENO: checking abstract socket namespace" >&5  
  6. echo $ECHO_N "checking abstract socket namespace... $ECHO_C" >&6  
  7. if test "${ac_cv_have_abstract_sockets+set}" = set; then  
  8.   echo $ECHO_N "(cached) $ECHO_C" >&6  
  9. 其中ac_cv_have_abstract_sockets是我们要查找的变量  
  10. 使用echo ac_cv_have_abstract_sockets=yes>arm-linux.cache  
  11. 然后  
  12. ./configure --host=arm-linux --cache-file=arm-linux.cache  
  13. OK这样就搞定了  
 



2、util.c:100:1: pasting "t" and "->" does not give a valid preprocessing token

解决方法:


  1. 修改compat.h中的  
  2. #define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff  
  3. 为:  
  4. #define TIMEZONE_OFFSET(foo) foo->tm_gmtoff  
 


 

3、Could not chdir to "/etc/boa": aborting

解决方法:自己建立/etc/boa目录,把配置文件boa.conf拷贝进去

 

4、No such user:

把boa.conf的group和user都改为 0 即可

 

5、boa.c:211 - getpwuid: No such file or directory

这个需要看log输出才行,我的是 /var/boa_error_log 

要改源代码了,定位/src/boa.c大约211行,注释掉如下:


  1. #if 0  
  2.         if (passwdbuf == NULL) {  
  3.             DIE("getpwuid");  
  4.         }  
  5.         if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) {  
  6.             DIE("initgroups");  
  7.         }  
  8. #endif   
 


 

6、icky Linux kernel bug!

定位/src/boa.c大约211行,注释掉如下:

  1. /* test for failed-but-return-was-successful setuid 
  2.          * http://www.securityportal.com/list-archive/bugtraq/2000/Jun/0101.html 
  3.          */  
  4. #if 0  
  5.         if (setuid(0) != -1) {  
  6.             DIE("icky Linux kernel bug!");  
  7.         }  
  8. #endif  
 


 

7、was not found on this server

估计很多人遇到这个,主要是ScriptAlias最后面忘记加斜杠“/”

例如,ScriptAlias /www/cgi-bin跟/www/cgi-bin/是不一样的,呵呵

 

8、502 Bad Gateway The CGI was not CGI/1.1 compliant

原因有很多,不过我的既没有在

“在 cgi.c中的函数complete_env加入 my_add_cgi_env(req, "LD_LIBRARY_PATH", "/lib"); ”

也没有让cgi程序的makefile加CFLAG = -static

也没有说因为中文而导致,我的是cgi程序的第一个printf导致的,请看:

printf("Content-type: text/html;charset=gb2312/n/n");

这样的不行:

printf("%s%c%c /n","Content-Type:text/html;charset=gb2312",13,10);

但是lighttpd可以,吐血吧?

 

另外在cgi-bin目录好像访问不了htm等静态文件,否则也显示The CGI was not CGI/1.1 compliant,知道的大侠可以留个言告知下。

//

其他的错误估计就是Servername了,搜索吧,问题不大。

祝各位玩的愉快!BOA太老了,能不用真的就不用,烦死人!

最近在搞lighttpd,死活移植不上去,移植ok后运行又没反应!

阅读(4366) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~