boa在ARM上的移植方法

合集下载

在arm开发板上部署boa服务器

在arm开发板上部署boa服务器

在arm开发板上部署boa服务器2009-08-20 14:22:12| 分类:编程笔记|字号订阅里面所有的步骤都确定完成过,但是可能遗漏了一些步骤,有待重部署一次来验证,补充,--------------------------------------一,下载/二,解压# tar xzf boa-0.94.13.tar.gz三,编译# cd boa-0.94.13/src# ./configure生成了makefile文件,修改makefile文件,把其中的CC CPP改为:CC = arm-linux-gccCPP = arm-linux-g++然后make# make删除调试信息(可以不做,目的是减小文件大小):# arm-linux-strip boa四,修改配置从boa根目录找到boa.conf文件,修改如下项目:User nobody (可以不修改)Group nogroup 改为:Group 0ErrorLog /var/log/boa/error_log (错误日志文件)AccessLog /var/log/boa/access_log (访问日志文件,可以用#注释掉这行,表示不要这个日志)ServerName (服务器地址)DocumentRoot /var/www (html文件主路径)MimeTypes /etc/mime.types (mime.types文件)更多配置,可以参见:/u1/34076/showart_268366.html五,配置开发板1,复制boa的可执行文件到开发板,(如/usr/local/bin/ 目录)2,在开发板上建文件夹# mkdir /var/www/ ,并放一个简单的index.html 测试文件进去# mkdir /var/log/boa ,用来存放access_log error_log3,复制之前修改好的boa.conf文件到/etc/boa/boa.conf4,复制自己pc(我的是ubuntu)上的mime.types文件,到/etc/mime.types上六,运行boa# boa-----------------------------------------------------------------------------------------------------------------更多说明:一,运行正确以上6步后,应该能通过其它电脑的浏览器,访问到/var/www/index.html页面二,如果执行时候有错误:# ./boa[27/Nov/1990:13:22:25 + 0000]boa.c:266.icky Linux kernel bug!:No such fileBae将User 0修改成User nobodyBae三,在板子上方放的cgi程序,html文件,一定要把权限修改对,修改成755四,一个简单的cgi测试程序:(来自:/viewthread.php?tid=83&highlight=cgi)1,html文件:-------------------------------------<html><head><title>CGI Testing</title></head><body><table width="200" height="180" border="0" style="font-size:12px"><tr><td><div style="font-weight:bold; font-size:15px">Method: GET</div><div>lease input two number:<div><form method="get" action="./cgi-bin/get"><input type="txt" size="3" name="a">+<input type="txt" size="3" name="b">=<input type="submit" value="sum"></form></td></tr><tr><td><div style="font-weight:bold; font-size:15px">Method: POST</div><div>lease input two number:<div><form method="post" action="./cgi-bin/post"><input type="txt" size="3" name="m">*<input type="txt" size="3" name="n">=<input type="submit" value="resu"></form></td></tr><tr><td><inputtype="button" value="BackHome"onclick='javascript:window.location="./index.html"'></td></tr></table></body></html>------------------------------2,get.c :------------------------------#include <stdio.h>#include <stdlib.h>int main(void){char *data;char a[10],b[10];printf("Content-Type:text/html\n\n");printf("<HTML>\n");printf("<HEAD>\n<TITLE >Get Method</TITLE>\n</HEAD>\n");printf("<BODY>\n");printf("<div style=\"font-size:12px\">\n");data = getenv("QUERY_STRING");if(sscanf(data,"a=%[^&]&b=%s",a,b)!=2){printf("<DIV STYLE=\"COLOR:RED\">Errorarameters should be entered!</DIV>\n"); }else{printf("<DIV STYLE=\"COLOR:GREEN; font-size:15px;font-weight:bold\">a + b= %d</DIV>\n",atoi(a)+atoi(b));}printf("<HR COLOR=\"blue\" align=\"left\" width=\"100\">");printf("<input type=\"button\" value=\"Back CGI\"onclick=\"javascript:window.location='../cgi.html'\">");printf("</div>\n");printf("</BODY>\n");printf("</HTML>\n");return 0;}------------------------------3,post.c:------------------------------#include <stdio.h>#include <stdlib.h>int main(void){int len;char *lenstr,poststr[20];char m[10],n[10];printf("Content-Type:text/html\n\n");printf("<HTML>\n");printf("<HEAD>\n<TITLE >ost Method</TITLE>\n</HEAD>\n");printf("<BODY>\n");printf("<div style=\"font-size:12px\">\n");lenstr=getenv("CONTENT_LENGTH");if(lenstr == NULL){printf("<DIV STYLE=\"COLOR:RED\">Errorarameters should be entered!</DIV>\n"); }else{len=atoi(lenstr);fgets(poststr,len+1,stdin);if(sscanf(poststr,"m=%[^&]&n=%s",m,n)!=2){printf("<DIV STYLE=\"COLOR:RED\">Error: Parameters are not right!</DIV>\n");}else{printf("<DIV STYLE=\"COLOR:GREEN; font-size:15px;font-weight:bold\">m * n = %d</DIV>\n",atoi(m)*atoi(n));}}printf("<HR COLOR=\"blue\" align=\"left\" width=\"100\">");printf("<input type=\"button\" value=\"Back CGI\"onclick=\"javascript:window.location='../cgi.html'\">");printf("</div>\n");printf("</BODY>\n");printf("</HTML>\n");fflush(stdout);return 0;}------------------------------4,把两个c程序编译完成,复制到开发搬上,通过其它pc访问测试html页面,调用这两个cgi,其中如果出现:502 Bad Gateway The CGI was not CGI/1.1 compliant.错误,有可能是如下原因:(1)将.cgi文件拷贝至目标板上后,必须改变其权限chmod 755 *(2)测试程序中“//“的问题。

嵌入式WEB服务器在ARM-Linux上的移植全过程-::电子爱好者天地::.-西...

嵌入式WEB服务器在ARM-Linux上的移植全过程-::电子爱好者天地::.-西...

嵌入式WEB服务器在ARM-Linux上的移植全过程-::电子爱好者天地::.-西...因为要用,所以查了一些资料,再结合自己的实际情况,在ARM板子上做了一个WEB服务器,服务器可以通过CGI进行动态交互.现记录于此.主机:redhat企业版4目标板:EBD9260-S(内核版本2.6.19)主机IP:192.168.0.12目标板IP:192.168.0.11交叉编译环境已经设置好.由于ARM资源的限制,不可能将一些大型的服务器移植上去,对脚本的支持也不大可能,开源的boa就是这么一个服务器:可以传送静态网页和通过纯CGI的方式进行交互.步骤:1.从上下载boa的源码,目前版本是boa-0.94.132.tar -xzvf boa-0.94.13cd boa-0.94.13/src./configure,生成Makefile3.vi Makefile,修改:CC=armv5l-linux-gccCPP=armv5l-linux-gcc -E保存退出4.make,出现错误:util.c:100:1:pasting "t" and "->" does not give a valid preprocessing token5.修改compat.h中:#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff#define TIMEZONE_OFFSET(foo) foo##->tm_zone为:#define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff#define TIMEZONE_OFFSET(foo) (foo)->tm_zone 6.还有一个错误需要修改:将boa.c中的if(setuid(0)!=-1){DIE("icky Linux Kernel bug!");}将这三行注掉,不然编译不会出错,但是启动不起来7.重新make,生成可执行文件boa8.剥去调试信息:armv5l-linux-strip boa9. 修改boa-0.94.13目录中的boa.conf:port 80user 0group 0Errorloog /var/log/boa/error_logAccesslog /var/log/boa/access_logserver Name Document Root /var/wwwDirectaryIndex index.htmlKeepAliveMax 1000KeepAliveTimeOut 10Mimetypes /etc/mime.typesDefaultType text.plainCGIPATH /bin:/usr/bin:/usr/local/binAlias /doc /usr/docScriptAlias /cgi-bin/ /var/www/cgi/bin/10:在目标板上:mkdir /var/wwwmkdir /var/www/cgi-binmkdir /var/log/boamkdir /etc/boa通过ftp或者nfs的方式将主机下的/etc/mime_types.h传到目标板/etc下将刚才修改的boa.conf传到/etc/boa下将生成的boa可执行文件传到/usr/bin下制作index.html,将其传到目标板/var/www/下11.在目标板上启动boa,在主机上的浏览器中输入:http://92.168.0.11就可以看到index.html的内容了,如果看到,则说明boa移植成功了12.测试cgi.编写hello.cgi:#include <stdio.h>int main(void){printf("Conten-type:text/html\n\n");printf("<html>\n");printf("<head><title>CGI OUTPUT</title></head>\n");printf("<body\n>");printf("<h1>Hello,xibiren!</h1>\n");printf("</body>\n");printf("</html>\n");exit(0);}然后armv5l-linux-gcc -o hello.cgi hello.c生成hello.cgi,将其传输到目标板上/var/www/cgi-bin/目录下13.在主机浏览器中输入http://192/168.0.11/cgi-bin/hello.cgi如果能看到:Hello,xibiren!的测试界面,则说明cgi测试通过.//****----------------//要想进一步用好boa的cgi功能,还必须移植CGIC库.下次再写了.//****----------------//按照上面的步骤执行之后,需要重新制作文件系统,才能在下此开机之后能够使用.//****-----------------//。

嵌入式boa服务器移植说明

嵌入式boa服务器移植说明

嵌入式boa服务器的移植——cpw806开发板:gec2410开发环境:Vmware+redflag6.0交叉编译器:arm-linux-gcc-4.3.2软件版本:linux2.6.31(内核),boa-0.94.13.tar.gz一:准备boa服务器源代码下载地址:/projects/boa/。

二:移植boa服务器1:编译boa服务器①解压#tar–zxvf boa-0.94.13.tar.gz②进入boa-0.94.13/src目录,#./configure③#修改交叉编译器路径#vi MakefileCC=gccCPP=gcc-E该为:CC=arm-linux-gccCPP=arm-linux-gcc-E④#make⑤去除调试信息#arm-linux-strip boa经4,5步之后,便在src目录下生成boa可执行文件。

编译过程中出现如下错误util.c:100:1:pasting“t”and“->”does not give a valid preprocessing token make:[util.o]Error1解决办法修改compat.h中的#define TIMEZONE_OFFSET(foo)foo##->tm_gmtoff为:#define TIMEZONE_OFFSET(foo)foo->tm_gmtoff有人说改用2.95.3版本的编译器也可以避免这个错误,本人没有试验过。

至此编译完成,此时便可生成可执行程序boa。

2:配置boa.conf文件有关boa.conf的说明文档很多,本人不再赘述,下面为有必要修改和注意的部分。

1修改User nobody为User0;2修改Group nogroup为Group0②设定日志目录:boa日志有两部分,Errorlog和AccessLog一般情况下为/var/log/boa/error_log和/var/log/boa/access_log两个文件。

嵌入式boa服务器搭建和移植

嵌入式boa服务器搭建和移植

嵌入式boa服务器搭建和移植1.先下载源码/ ==> boa-0.94.13.tar.g2.tar -xvf boa-0.94.13.tar.g3./configure4.修改MakefileCC =or32-linux-gccCPP = or32-linux-gcc–E5.修改boa.c,注释下面几行if (setuid(0) != -1) {DIE(“icky Linux kernel bug!”);}改为/*if (setuid(0) != -1) {DIE(“icky Linux kernel bug!”);}*/6.修改文件compat.h#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff修改成#define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff7.make 编译,这时候就会生成一个boa的可执行文件boa的配置文件是boa.conf,大概的配置是这样的:MimeTypes /etc/mime.types //指明mime.types文件位置DefaultType text/plain //文件扩展名没有或未知的话,使用的缺省MIME类型CGIPath /bin:/usr/bin:/usr/local/bin //提供CGI程序的PATH环境变量值Alias /doc /usr/doc //为路径加上别名ScriptAlias /cgi-bin/ /var/www/cgi-bin/ //输入站点和CGI脚本位置对于调试阶段,可以把主机的目录挂载到目标板上面,这样就方便调试。

假设主机的NFS共享目录是/NFS,在NFS下面建立一个www的文件夹,然后在www的文件夹下面建立images,cig-bin目录,还有一个index.html,可以随便找一个主页就可以了。

在主机上mkdir /NFS/wwwmkdir /NFS/www/imagesmkdir /NFS/www/cgi-bincp <dir>/index.html /NFS/www/然后在板子上面建立/var/www的目录mkdir /var/wwwmount -t nfs -o nolock <主机IP>:/NFS/www /var/www //挂载目标www板子上建立日志存放目录,在板子上:mkdir /var/logmkdir /var/log/boa对于boa配置文件的移植,可以把主机上的boa.conf拷贝到主机的NFS共享目录/NFS/www 下面。

boa以及servfox移植笔记

boa以及servfox移植笔记

Boa移植1.修改CC=此为自己的交叉编译路劲(which arm-linux-gcc查看交叉编译路劲)2.修改CPP =此为自己的交叉编译路劲–ELDFLAGS = -g -static(添加静态编译选项)。

3../configure 生成Makefile修改src/compat.h找到#define TIMEZONE_OFFSET(foo) foo## ->tm_gmtoff修改成#define TIMEZONE_OFFSET(foo) foo->tm_gmtoff修改define.h找到#define SERVER_ROOT “/etc/boa”修改为#define SERVER_ROOT “/root/myfile/myboa/server”这里定义的web服务器的文件根目录(用户可以自己定义,只要跟boa.conf中的定义一致就可以)boa.c:211 - getpwuid: No such file or directory解决办法: 修改src/boa.c注释掉下面这段程序:if (passwdbuf == NULL) {DIE(”getpwuid”);}if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) {DIE(”initgroups”);}即修改为:#if 0if (passwdbuf == NULL) {DIE(”getpwuid”);}if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) {DIE(”initgroups”);}#endif④boa.c:228 - icky Linux kernel bug!: No such file or directory解决办法: 修改src/boa.c注释掉下面语句:if (setuid(0) != -1) {DIE(”icky Linux kernel bug!”);}即修改为:#if 0if (setuid(0) != -1) {DIE(”icky Linux kernel bug!”);}#endif4.make5.arm-linux-strip boa6.修改boa.conf文件7.port 80er 09.Group 010.#ServerAdmin root@localhost11.#ErrorLog /var/log/boa/error_log12.#AccessLog /var/log/boa/access_log13.S erverName .here14.D ocumentRoot /root/myfile/myboa/server15.D irectoryIndex index.html16.#DirectoryMaker /usr/lib/boa/boa_indexer17.K eepAliveMax 100018.K eepAliveTimeout 10019.M imeTypes /root/myfile/myboa/server/mime.type20.D efaultType text/html21.#Alias /doc /usr/doc22.S criptAlias /cgi-bin/ /root/myfile/myboa/server/cgi-bin23.S criptAlias /index.html/ /root/myfile/myboa/server/http-java-applet (23可以没有)在root目录下创建:/root/myfile/myboa/server/在server下创建cgi-bin、http-java-applet、并将PC上/etc/mime.types文件拷贝到开发板server目录下在/root/myfile下创建bin目录将可执行文件boa复制到bin目录下移植servfox24.【移植servfox】其实spcaview也可以做采集端。

boa移植boa交叉编译

boa移植boa交叉编译

boa移植boa交叉编译BOA 服务器是⼀个⼩巧⾼效的web服务器,是⼀个运⾏于unix或linux下的,⽀持CGI的、适合于嵌⼊式系统的单任务的http服务器,源代码开放、性能⾼配置boa-0.94.13 # ./configure修改MakefileCC = arm-linux-gccCPP = arm-linux-gcc -E编译boa-0.94.13 # make出现如下错误出现错误:yacc -d boa_grammar.ymake: yacc: Command not foundmake: *** [y.tab.c] Error 127解决办法:# sudo apt-get install bison出现错误:lex boa_lexer.lmake: lex: Command not foundmake: *** [lex.yy.c] Error 127解决办法:# sudo apt-get install flex出现错误:arm-none-eabi-gcc -g -O2 -pipe -Wall -I. -c -o alias.o alias.cIn file included from alias.c:26:0:boa.h:41:19: fatal error: netdb.h: No such file or directorycompilation terminated.<builtin>: recipe for target 'alias.o' failedmake: *** [alias.o] Error 1解决办法://将交叉编译⼯具链换成gcc version 4.3.2 (Sourcery G++ Lite 2008q3-72)出现错误:arm-linux-gcc -g -O2 -pipe -Wall -I. -c -o util.o util.cutil.c:100:1: error: pasting "t" and "->" does not give a valid preprocessing tokenmake: *** [util.o] Error 1解决办法:# vi compat.h //修改120⾏#ifdef HAVE_TM_GMTOFF#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff#else制作cgi页⾯交叉编译出⼀个cig脚本,供boa使⽤。

boa 服务器移植到arm

boa 服务器移植到arm

BOA移植详解+cgi一、Boa程序的移植1、下载Boa源码下载地址:/目前最新发行版本:0.94.13(几年没更新版本了)下载boa-0.94.13.tar.gz,解压:[root@Localhost source]$tar xzf boa-0.94.13.tar.gz2、生成Makefile文件进入boa-0.94.13,直接运行src/configure文件[root@Localhost src]$./configure3、修改Makefile文件把arm-linux-gcc加入到PATH路径信息中CROSS=arm-linux-CC=$(CROSS)gccCPP=$(CROSS)gcc-E#CC=gcc#CPP=gcc-Earm-linux-gcc:installation problem,cannot exec`cpp0':?????????arm-linux-gcc:installation problem,cannot exec`cpp0':?????????arm-linux-gcc:installation problem,cannot exec`cc1':?????????arm-linux-gcc:installation problem,cannot exec`cpp0':No such file or directory解决的办法,把arm-linux-gcc安装在他的默认目录。

2.95.3/usr/local/arm/2.95.3/bin/(注意:必须用cross-2.95.3,如使用3.4.1、4.1.1等等会出错或x86gcc或mipsel-linux-gcc都会报如下的错误,修改后错误不再出现)gcc-g-O2-pipe-Wall-I.-c-o util.o util.cutil.c:100:1:error:pasting"t"and"->"does not give a valid preprocessing tokenmake:***[util.o]Error1解决方法:修改src/compat.h#define TIMEZONE_OFFSET(foo)foo##->tm_gmtoff修改成#define TIMEZONE_OFFSET(foo)(foo)->tm_gmtoff4、交叉编译[root@Localhost src]$make5、去除调试信息,减小体积,大约能减小一半还多。

小型Web服务器Boa的移植与验证

小型Web服务器Boa的移植与验证

小型Web服务器Boa的移植与验证管华庆【期刊名称】《计算机技术与发展》【年(卷),期】2016(000)002【摘要】With the development of computer technology and modern communication technology,the device is connected to the network which is available to the general requirements of modern mobile terminals. Compared with the Internet Web applications,the embedded Web server has the advantages of simple structure and low functional requirements. The embedded devices connected to the Internet makes operating state to be easily monitored in real-time through of the network. Then the data can be vividly and intuitively displayed on PC, PDA,Phone and other equipments. Users do not need special application software. This portable communication earth station monitoring system is porting embedded Linux operating system on ARM9 chip. The appropriate application layer Web server on this system is in-stalled,the system uses the Boaserver,which is based on B/S structure mode,and user opens a browser on your terminal server to access Web pages stored in the satellite communication earth station,bringing real-time,portable monitor to the user.%现代通信技术和计算机技术都迎来了显著的发展,各个应用领域都要求将可移动设备接入网络。

web服务器Boa移植手册

web服务器Boa移植手册
1
Boa服务器的移植可分成两部分,一个是在x86平台上移植,即在虚拟机的linux下,另一个是 在arm平台上移植,即在开发板上的linux下,本手册的前四步,都是在虚拟机上做移植,第五步 是移植到发开板上。
一、编译 boa 程序
1、下载boa-0.94.13.tar.gz。 2、解压 3、#./configure 4、#make 编译会出错: util.c: 100: 1: pasting “t” and “->” does not give a valid preprocessing token make: [util.o] Error1 解决方法,修改compat.h中的 #define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff 为: #define TIMEZONE_OFFSET(foo) foo->tm_gmtoff
3
MimeTypes /etc/mime.types 将网页文件放在/var/www 目录下,cgi 脚本放在/var/www/cgi-bin 目录下。在开发板上运行 boa, 在主机 IE 上输入开发板 IP,可看到网页。
六、常见错误
这些错误内容可查看/var/log/boa/error_log 文件 1、gethostbyname:: No such file or directory 解决办法: 修改 boa.conf 去掉 ServerName .here 前的注释符号(#)。 2、util.c:100:1: error: pasting "t" and "->" does not give a valid preprocessing token make: *** [util.o] 解决办法: 修改 src/compat.h 找到 #define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff 修改成 #define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff 3、boa.c:211 - getpwuid: No such file or directory 解决办法: 修改 src/boa.c 注释掉下面这段程序: if (passwdbuf == NULL) { DIE(”getpwuid”); } if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) { DIE(”initgroups”); } 即修改为: #if 0 if (passwdbuf == NULL) { DIE(”getpwuid”); } if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) { DIE(”initgroups”); } #endif 4、boa.c:228 - icky Linux kernel bug!: No such file or directory 解决办法: 修改 src/boa.c 注释掉下面语句: if (setuid(0) != -1) { DIE(”icky Linux kernel bug!”);

将BootLoader移植ARM上

将BootLoader移植ARM上

实验内容二—BootLoader移植一、实验目的BootLoader是嵌入式系统上电之后,操作系统内核运行之前执行的一段程序,主要负责载入内核。

利用上次实验制作的交叉编译工具为目标机编译一个U-boot,然后烧写到实验箱中,为后面的系统移植和嵌入式程序的编译做基础(P58)。

二、实验内容在Linux下利用交叉编译工具配置编译u-boot并烧写到arm开发箱中。

三、实验步骤(1)实验准备从网上/projects/u-boot/下载U-boot的最新版本,解压后可以看到它的全部源代码,目录解释见书本P58表5-2,我们需要针对自己使用的CPU和开发板进行(2)修改顶层MakefileU-Boot是通过gcc和Makefile组织编译的。

顶层目录下的Makefile可以设置开发板的定义,然后递归地调用各级子目录下的Makefile,最后把编译过的代码连接成u-boot映像。

在顶层Makefile中先要定义交叉编译器,这里就使用我们上一次实验中构建的交叉编然后在顶层Makefile中,你只要找到smdk2410_config这一行:然后参考上面一行增加arm2410_config ,如下:解释一下这行配置中各项的意思:arm: CPU 的架构(ARCH)arm920t: CPU 的类型(CPU),其对应于cpu/arm920t 子目录。

arm2410: 开发板的类型,对应于board/arm2410 目录。

NULL: 开发者/或经销商(vender)。

s3c24x0: 片上系统(SOC)。

(3)为arm2410平台新建一个目录我们参考smdk2410开发板的配置,在smdk2410平台的基础上进行移植的。

不过为了不破换U-Boot本身的代码,我们在board目录下将smdk2410文件夹复制为arm2410,并将该目录下的smdk2410.c重命名为arm2410.c(4)在board/arm2410目录下增加nand.c文件,文件内容如下:(5)修改board/arm2410目录下的Makefile修改:为下面一行:这是因为前面将smdk2410.c改成arm2410.c,而且新增加了个nand.c文件,所以要在Makefile中告诉编译器将arm2410.c及nand.c文件分别编译链接成nand.o及arm2410.o这两个目标文件。

移植boa的问题

移植boa的问题

boa成功移植到S3C2410开发板上ARM-LINUX学习整理交流2009-06-06 16:14:27 阅读277 评论0字号:大中小2009 05 11一:下载源码:/[root@localhost ~]# cd /usr/src[root@localhost src]# tar zxvf boa-0.94.13.tar.tar[root@localhost src]# cd boa-0.94.13[root@localhost boa-0.94.13]# cd src[root@localhost src]# ./configure二:编译前修改的文件:1. 修改Makefile文件,找到CC=gcc和CPP=gcc -E,分别将其改为交叉编译器安装的路径:CC=/usr/local/arm/2.95.3/bin/arm-linux-gccCPP=/usr/local/arm/2.95.3/bin/arm-linux-gcc –E保存退出。

2. 修改编译方式:LDFLAGS = -g –static注: 使用静态编译可以让目标文件自动的包含所需要的库文件,而动态编译需要手工拷贝库文件。

3.修改/src/defines.h文件:#define SERVER_ROOT "/etc/boa"4 修改boa-0.94/src/ util.c文件修改char *get_commonlog_time(void)函数。

time_offset = 0;5. 修改src/config.c:加Current_uid=16. 修改compat.h:把第120 行的#defineTIMEZONE_OFFSET(foo)foo##->tm_gmtoff修改为:#defineTIMEZONE_OFFSET(foo)foo->tm_gmtoff7.修改/src/boa.c,注释掉下面两行:/* if (setuid(0) != -1) {DIE("icky Linux kernel bug!");} *//*if (passwdbuf == NULL) {DIE("getpwuid");}*/8 gethostbyname:: Resource temporarily unavailable这个问题我也遇到过,我只是把src文件夹下的config.c里的if(!server_name){..........}(大概在266行到286行之间)注释掉,就能运行在板子上运行boa,到现在为止没有遇到过是么问题。

嵌入式web服务器boa移植到mini2440开发板详细过程

嵌入式web服务器boa移植到mini2440开发板详细过程

嵌入式web服务器boa移植到mini2440开发板详细过程1、概述为了和开发板上用的httpd服务,我选用的服务器是boa,boa已经没有更新了,但是现在的应用仍然很大,当然更先进的AppWeb当然是更好的选择,不过学习应先从简单的入手。

本教程使用环境是Red Hat Enterprise Linux 6,交叉编译工具是arm-linux-gcc4.3.2,开发板是mini2440,开发板内核是2.6.32.2、到/下载源码,boa最终版是0.94.133、解压文件1)解压[root@localhostopen_source]# lsboa-0.94.13.tar.gz[root@localhostopen_source]# tar -xvfboa-0.94.13.tar.gz -C ./[root@localhostopen_source]# lsboa-0.94.13 boa-0.94.13.tar.gz2)为了和X86版本区别把解压出来的文件夹boa-0.94.13重新命名为boa-0.94.13_arm[root@localhostopen_source]# mv boa-0.94.13 boa-0.94.13_arm4. 编译前修改工作(主要是因为boa太久没有更新,目前相对说比较老,要修改下才能通过编译)1)修改vicompat.h文件[root@localhostopen_source]# lsboa-0.94.13_arm boa-0.94.13.tar.gz[root@localhostopen_source]# cd boa-0.94.13_arm/src/[root@localhostsrc]# vicompat.h找到#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff修改成#define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff即将120行和126行的foo##->tm_gmtoff改为foo->tm_gmtoff否则会出现错误:util.c:100:1: error: pasting "t" and "->" does not give a valid preprocessing token make: *** [util.o] 错误12)修改src/log.c注释掉if (dup2(error_log, STDERR_FILENO) == -1) {DIE("unable to dup2 the error log");}为:/*if (dup2(error_log, STDERR_FILENO) == -1) {DIE("unable to dup2 the error log");}*/否则会出现错误:log.c:73 unable to dup2 the error log:bad file descriptor3)修改src/boa.c注释掉下面两句话:if (passwdbuf == NULL) {DIE(”getpwuid”);}if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) { DIE(”initgroups”);}为#if 0if (passwdbuf == NULL) {DIE(”getpwuid”);}if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) { DIE(”initgroups”);}#endif否则会出现错误:boa.c:211 - getpwuid: No such file or directory。

boa移植实验

boa移植实验

6.实验步骤
(4)登录boa服务器 登录boa服务器 PC机浏览器地址栏输入目标系统的 地 机浏览器地址栏输入目标系统的IP 在PC机浏览器地址栏输入目标系统的IP地 访问存在于目标系统中的网页。 址,访问存在于目标系统中的网页。 http://192.168.0.168
Boa移植实验 Boa移植实验
1.实验目的
掌握boa应用 web服务 构建和移植。 掌握boa应用(web服务)构建和移植。
硬件: 硬件: PC机 PC机 软件: 软件: RedHat Linux 9.0操作系统 9.0操作系统 嵌入式Linux开发环境 嵌入式Linux开发环境 boa- 94.13.tar.gz软件包 boa-0.94.13.tar.gz软件包
1台

3.实验内容
配置和编译boa 服务上 配置和编译 boa服务上 , 并构建一个小型的 服务上, 网页服务器。 网页服务器。

4.实验预习要求
预 习 boa 相 关 知 识 , 可 查 阅 boa 网 站 www.boa. ; 预习交叉编译相关知识; 预习交叉编译相关知识;

7.思考
移植/安装boa,需要注意哪些问题? 移植/安装boa,需要注意哪些问题?


6.实验步骤
生成的Makefile文件是针对 文件是针对X86平台的 平台的, 生成的Makefile文件是针对X86平台的,为了生成 能够在ARM上运行的 上运行的boa,需要修改Makefile文件 文件。 能够在ARM上运行的boa,需要修改Makefile文件。 Makefile的31~32行内容 行内容: 将Makefile的31~32行内容: CC = gcc CPP = gcc –E 应用(在交叉编译时使用): 应用(在交叉编译时使用): CC = arm-linux-gcc arm-linuxCPP = arm-linux-gcc –E arm-linux 然后输入make命令进行编译 命令进行编译, 然后输入make命令进行编译,在src目录下就会 生成boa文件 文件。 生成boa文件。 $ make

嵌入式linuxweb服务器boa的移植方法arm开发板linux嵌入式web服务器boa

嵌入式linuxweb服务器boa的移植方法arm开发板linux嵌入式web服务器boa

嵌入式linux web服务器boa的移植方法/arm开发板linux嵌入式web服务器boa今天自己在开发板上移植了boa服务器。

参考资料是李驹光、郑耿大侠在恒颐论坛上的帖子。

李大侠写的好,我没有费什么力气就搞定了,:-)。

步骤如下:1.从bbb:///下载Boa源码,将其解压并进入源码目录的src子目录# tar -zxvf boa-0.94.13.tar.gz# cd boa-0.94.13/src2.生成Makefile文件# ./configure修改Makefile文件,a.找到CC=gcc,将其改成CC = arm-linux-gcc,b.找到CPP = gcc –E,将其改成CPP = arm-linux-gcc –E,保存退出。

3.运行make进行编译,得到的可执行程序为boa,并将调试信息剥去# make# arm-linux-strip boa4.编写boa.conf5.cp boa 到开发板的/bin目录下,在开发板/etc目录下建boa目录,cp boa.conf 到板子的/etc/boa目录。

6.创建日志文件所在目录/var/log/boa,创建HTML文档的主目录/var/www,创建CGI脚本所在目录/var/www/cgi-bin/,在/var/www中放置一个index.html 文件7.cp mime.types文件到开发板/etc目录8.vi passwd,添加nouser用户,vi group 添加nogroup组8.运行boa:#/bin/boa现在通过其他机器就可以访问了。

bbb://192.168.0.12就可以访问到你放置的那个index页面了。

9.编辑helloworld.c程序测试cgi的运行#arm-linux-gcc -o helloworld.cgi helloworld.c#cp helloworld.cgi 到开发板的/var/www/cgi-bin目录下在pc机的浏览器位置栏输入bbb://192.168.0.12/cgi-bin/helloworld.cgi,可以看到相关页面,CGI脚本测试通过。

boa服务器的移植

boa服务器的移植

boa服务器的移植boa Web服务器是一个单任务http服务器,源代码开放、性能高。

下载地址:/Cgic库文件:cgic205.tar.gz 。

下载地址:/cgic/交叉编译器版本:arm-none-linux-gnueabi-gcc一、编译配置boa服务器1 、[root@localhost /]#mkdir web//在根目录下创建web目录2 、[root@localhost /]# cd /web/3 、[root@localhost web]# rz4 、[root@localhost web]# tar –zxvf boa-0.94.13.tar.gz//将源码解压到/web目录下5 、[root@localhost web]# cd boa-0.94.13/6 、[root@localhost boa-0.94.13]# cd src/7 、[root@localhost src]# ls8 、[root@localhost src]# ./configure//运行./configure使之生成Makefile文件9 、[root@localhost src]# vi Makefile修改内容如下:把CC=gcc 和CPP=gcc -E改写成CC=arm-none-linux-gnueabi-gccCPP=arm-none-linux-gnueabi-g++ -E10 、[root@localhost src]# vi compat.h在一般模式下输入:set nu显示行编号,再用120进到120行,修改内容如下:120 #define TIMEZONE_OFFSET(foo)foo##-&gt;tm_gmtoff改为define TIMEZONE_OFFSET(foo) foo-&gt;tm_gmtoff 把120行foo后两个#号去掉11 、[root@localhost src]# make//编译12 、[root@localhost src]# arm-linux-strip boa //优化boa可执行文件(此步非必须)13 、[root@localhost web]# cd boa-0.94.13/14 、[root@localhost boa-0.94.13]# vi boa.conf //修改boa的配置文件在一般模式下输入:set nu显示行编号,再用111进到111行,修改内容如下:把111 DocumentRoot /var/www改为111 DocumentRoot /var/www//指明html文件所放的路径把193 ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/改为193 ScriptAlias /cgi-bin/ /var/www/cgi-bin///指明cgi脚本的虚拟路径所对应的实际路径15、将/src目录下新生成的boa文件下载到目标板的/bin目录下,将boa.conf文件下载到目标板的/etc/boa/目录下。

boa移植步骤

boa移植步骤

BOA在ARM9上的移植在开发板上移植boa,首先需要下载boa源码包boa-0.94.13.tar.gz并解压,然后进入src 目录执行configure命令,生成编译所需要的makefile文件。

接着修改makefile,使其make 生成的boa可执行文件可以在arm板上运行。

CC=arm-linux-gcc CPP=arm-linux-gcc-E生成boa可执行程序以后,需要配置boa服务器。

而这其中涉及到一个很重要的配置文件boa.conf,该文件的缺省目录是/etc/boa,由src/define.h文件的SERVER_ROOT定义,也可以在启动的时候通过“-c”指定。

我们需要对其进行修改:Boa.conf的修改1、修改Group nogroup为Group 0 由于在/etc/group文件中没有nogroup组,所以设成0。

另外在/etc/passwd中有nobody用户,所以User nobody不用修改2、注释AccessLog /var/log/boa/access_log语句3、修改DocumentRoot为DocumentRoot /home/www 该目录为默认的开发板网页服务器文件所在目录4、修改mime.types文件所在的目录位置MimeTypes /home/mime.types mime.types文件从宿主机linux系统中的/etc目录中拷贝到开发板文件系统的home目录下5、打开ServerName 该项默认为未打开,执行boa会异常退出ServerName .here《基于ARM9的远程临近系统研究与实现》Boa Web Server的搭建1)下载Boa源码现在boa最新的版本是0.94.14rc21,这里我们使用的是0.94.13这个版本,boa-0.94.13.tar.gz.解压:#tar zxvf boa-0.94.13.tar.gz2)生成Makefile文件#cd boa-94.13/src#./configure3)修改Makefile找到CC=gcc并改为:CC=/usr/local/arm/2.95.3/bin/arm-linux-gcc找到CPP=gcc –E 并改为:CPP=/usr/local/arm/2.95.3/bin/arm-linux-gcc –E4)编译#make#/usr/local/arm/2.95.3/bin/arm-linux-strip boa5)Boa的配置在/etc/boa/boa/conf里修改:*将user nobodyGroup nogroup改为User 0Group 0;*将DocumentRoot /var/www改为DocumentRoot /www,这样web服务器的文档根目录为/www;*将MimeTypes /etc/mime.types改为MimeTypes /www/mime.types;定义默认首页和CGI程序所在目录,即DirectoryIndex index.htmlScriptAlias /cgi-bin /www这样指定后,index.html为远程浏览客房访问WebServer所看到的首页默认值,用C编写的CGI程序编译成二进制文件,放到/www目录下,CGI程序能被正确地执行。

移植boa的问题

移植boa的问题

移植boa的问题boa成功移植到s3c2410开发板上Arm linux学习、分类和通信2022-06-0616:14:27阅读277条评论0字体大小:大、中、小20210511[ root@localhostsrc[tarzxvfboa-0.94.13。

焦油焦油[root@localhostsrc]cdboa-0.94.13[root@localhostboa-0.94.13]#cdsrc[root@localhostsrc ]#./ 配置二:编译前修改的文件:1.修改makefile文件,找到CC=GCC和CPP=GCC-e,分别更改为cross compiler的安装路径:cc=/usr/local/arm/2.95.3/bin/arm-linux-gcccpp=/usr/local/arm/2.95.3/bin/arm-linux-gccce保存退出。

2.修改编译方法:ldflags=-gcstatic注:使用静态编译可以让目标文件自动的包含所需要的库文件,而动态编译需要手工拷贝库文件。

3.修改/src/defines.h文件:#定义服务器根\4修改boa-0.94/src/util.c文件时间偏移=0;5.修改src/config.c:加current_uid=1时区u偏移(foo)foo##->tm_Gmtoff修改为:#定义timezone_offset(foo)foo->tm_gmtoff7.修改/src/boa.c,注释掉下面两行:/*if(setuid(0)!=-1){死亡(\}*//*if(passwdbuf==null){die(\}*/8gethostbyname::Resource暂时不可用这个问题我也遇到过,我只是把src文件夹下的config.c里的if(!server_name){..........}(大概在266行到286行之间)注释掉,就能运行在板子上运行boa,到现在为止没有遇到过是么问题。

(完整版)嵌入式Web服务器Boa的移植及其应用毕业设计

(完整版)嵌入式Web服务器Boa的移植及其应用毕业设计

嵌入式Web 服务器Boa 的移植及其应用中文摘要计算机技术发展到今天,嵌入式系统的应用越来越广泛嵌入式计算机在应用数量上远远超过了各种通用计算机,一台通用计算机的外部设备中就包含了5-10个嵌入式微处理器。

而随着网络技术日新月异的发展,各种网络器件成为嵌入式系统新的应用。

微处理器产生后,价格低廉、结构小巧的CPU和外设连接提供了稳定可靠的硬件架构。

20世纪90年代,ARM 32位嵌入式RISC处理器扩展到世界范围,占据了低功耗、低成本和高性能的嵌入式系统应用领域的领先地位。

Linux因其可应用于多种硬件平台;是免费软件,源代码可以得到;微内核,本身内置网络支持和高度模块化等优点,非常适合做嵌入式开发的操作系统。

本论文主要研究了基于ARM的嵌入式Linux开发。

这个研究开发是在实践的基础上完成的,设计了以三星ARM920T CPU为核心的嵌入式硬件系统,并在此基础上嵌入linux系统,在linux系统上可以开发各种应用关键词:嵌入式、ARM9、BOA、RISCEmbedded Web server Boa transplantand applicationABSTRACTWith the rapid development of computer technology, embedded system is moreand more widely used. By now, embedded computer system is much more thancommon computer in quantity, there are about 5-10 microprocessor in the peripheralequipment of a computer. At the mean time, lots of network equipments become thenew application environment of embedded system since the progressivelydevelopment of network technology. The cheap and powerful microprocessors andvarious kinds of peripheral equipments spread to the range of the world, andoccupied in the field of application of low consumption, low cost and and application performance, Linux isrunning on many kinds of design in kernel.Therefore Linux is very suitable to be the operate system of embedded system.In this thesis, the embedded Linux system based on ARMdeveloped.The embedded in linux system can be developed.Keywords: Embedded、ARM9、BOA、RISC毕业论文(设计)原创性声明本人所呈交的毕业论文(设计)是我在导师的指导下进行的研究工作及取得的研究成果。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Boa服务器ARM板上的移植方法
一、boa服务器移植前的准备
网上下载boa服务器tar源码包
二、boa服务器配置流程
2.1.解压下载来的tar包
在linux终端命令行输入:tar –xf boa_xxx.tar
2.2. 配置boa选项
1. 修改boa.conf生效的目录
cd /src目录下修改defines.h文件
修改第30行,将默认的路径为/usr/boa 改为/home/boa
2.修改src/boa.c
注释掉226行的语句:
if (setuid(0) !=-1)
{
DIE(”icky Linux kernel bug!”);
}
即修改为:
#if 0
if(setuid(0) != -1)
{
DIE(”icky Linux kernel bug!”);
}
#endif
否则运行boa时会提示
boa.c:226 - icky Linux kernel bug!: No suchfile or directory错误
3. 修改boa.conf文件
打开boa.conf文件:vim boa.conf
将94行前面的#去掉
2.3. 编译配置好的boa
1. 切换到boa源码包src下运行configure
在linux终端命令行输入:./configure
2. 修改Makefile文件
将31行的
CC = gcc
修改为:CC=arm-none-linux-gnueabi-gcc
将32行的
CPP=gcc –E
修改为:CPP=arm-none-linux-gnueabi-g++ -E
3. 编译boa源码包
在linux终端命令行输入:make –j2
等待一段时间再输入:echo $? (如果显示为0说明编译成功,反之失败)
在当前目录下生成一个boa的可执行程序,./boa运行即可,
在命令行输入:ps –e (能看到boa的进程即说明boa正常工作移植成功)
将boa可执行文件拷贝到/etc/bin/下
4. 移植完成一大半
注:有些编译器会提示以下错误,按相应方法解决即可.
出现错误:
util.c: 100: 1: pasting “t”and “->”does not give a valid preprocessing token make: [util.o]
Error1
解决方法:
修改compat.h中122行的
#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff
为:
#define TIMEZONE_OFFSET(foo) foo->tm_gmtoff
修改compat.h中126行的
#define TIMEZONE(foo) foo##->tm_zone
为:
#define TIMEZONE(foo) foo->tm_zone
三、boa服务器boa.conf文件的设置
1.ARM板上建立/usr/boa目录, 并复制boa.conf到/usr/boa目录下
#mkdir /usr/boa
#cp boa.conf /usr/boa
2.访问端口号设置
大概25左右:Port 80,可以设定我们访问网页时的端口号默认为80—访问时无需指定假如改变了此端口号为8080,必须以下列格式访问:
http://192.168.0.250:8080一般在同一个电脑上运行多个boa服务器时可采用此
方法我们这里保持默认即可
3. 修改访问权限:
修改User nobody 为user 0
修改Group nogroup 为group 0
4. 设定日志目录:boa日志有两部分,Errorlog 和AccessLog
默认为/var/log/boa/error_log和/var/log/boa/access_log两个文件。

所以我们统一修改为:
ErrorLog /usr/boa/error_log
AccessLog /usr/boa/access_log
(注意:这里/usr/boa目录必须为可写,否则会出项错误:log.c:73 –Unable to
dup2 the error log: Bad file r.)
5. 设置html文件目录:
默认为:DocumentRoot /var/www
我们统一修改为:
DocumentRoot /usr/boa/www
6. 设置默认首页:
DirectoryIndex index.html
这是访问网页时若不指定访问的网页名称,服务器默认返回的网页,我们不做修改(在www的目录下必须包含一个index.html)
7. 设置cgi脚本目录:

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin
修改为
ScriptAlias /cgi-bin/ /usr/boa/cgi-bin
(注:boa提供cgi编程接口,使得网页具有交互能力,后面我们在做讲解.)8.测试
在/usr/boa/www中随意放一个测试网页(必须包含index.html文件)
我们这里随便建一个文件取名为index.html,里面写一个:hello boa...
在IE中敲入:http://192.168.0.250/ 即可看到刚才的helloo boa
证明整个boa搭建成功(注:192.168.0.250为ARM板的IP地址)。

相关文档
最新文档