[ZLG-ARM] 移植shttpd Web服务器到ARM-Linux系统

[复制链接]
2344|2
 楼主| postcode 发表于 2009-7-2 13:59 | 显示全部楼层 |阅读模式
一、下载并解压<br />下载的官方主页:http://shttpd.sourceforge.net/<br />我下的是目前最新的shttpd-1.39.tar.gz<br />解压:<br />[tekkamanninja@Tekkaman-Ninja&nbsp;source]$&nbsp;tar&nbsp;zxvf&nbsp;shttpd-1.39.tar.gz<br /><br />二、配置和交叉编译<br />[tekkamanninja@Tekkaman-Ninja&nbsp;source]$&nbsp;cd&nbsp;shttpd-1.39&nbsp;&nbsp;<br />[tekkamanninja@Tekkaman-Ninja&nbsp;shttpd-1.39]$&nbsp;cd&nbsp;src/<br />[tekkamanninja@Tekkaman-Ninja&nbsp;src]$&nbsp;kwrite&nbsp;Makefile<br /><br />只需在前面加上交叉编译器路径就好:<br />CC&nbsp;=&nbsp;/home/tekkamanninja/working/gcc4.1.1/gcc-4.1.1-glibc-2.3.2/arm-9tdmi-linux-gnu/bin/arm-9tdmi-linux-gnu-gcc<br />AR&nbsp;=&nbsp;/home/tekkamanninja/working/gcc4.1.1/gcc-4.1.1-glibc-2.3.2/arm-9tdmi-linux-gnu/bin/arm-9tdmi-linux-gnu-ar<br />CFLAGS&nbsp;=&nbsp;&nbsp;-DNO_SSL<br /><br />加上CFLAGS&nbsp;=&nbsp;&nbsp;-DNO_SSL,是因为如果编译SSL支持,会因符号未定义而无法通过。所以我去除了SSL&nbsp;支持。<br /><br />交叉编译:<br />[tekkamanninja@Tekkaman-Ninja&nbsp;src]$&nbsp;make&nbsp;unix<br /><br />开看程序需要那些动态库:<br />[tekkamanninja@Tekkaman-Ninja&nbsp;src]$&nbsp;~/working/gcc4.1.1/gcc-4.1.1-glibc-2.3.2/arm-9tdmi-linux-gnu/bin/arm-9tdmi-linux-gnu-readelf&nbsp;-d&nbsp;shttpd<br />Dynamic&nbsp;section&nbsp;at&nbsp;offset&nbsp;0x12cc8&nbsp;contains&nbsp;20&nbsp;entries:<br />&nbsp;&nbsp;Tag&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Name/Value<br />0x00000001&nbsp;(NEEDED)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Shared&nbsp;library:&nbsp;[libc.so.6]<br />0x0000000c&nbsp;(INIT)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x9180<br />0x0000000d&nbsp;(FINI)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x18708<br />0x00000004&nbsp;(HASH)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x8128<br />0x00000005&nbsp;(STRTAB)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x8a5c<br />0x00000006&nbsp;(SYMTAB)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x843c<br />0x0000000a&nbsp;(STRSZ)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;807&nbsp;(bytes)<br />0x0000000b&nbsp;(SYMENT)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;16&nbsp;(bytes)<br />0x00000015&nbsp;(DEBUG)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0<br />0x00000003&nbsp;(PLTGOT)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x22d90<br />0x00000002&nbsp;(PLTRELSZ)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;704&nbsp;(bytes)<br />0x00000014&nbsp;(PLTREL)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;REL<br />0x00000017&nbsp;(JMPREL)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x8ec0<br />0x00000011&nbsp;(REL)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x8e88<br />0x00000012&nbsp;(RELSZ)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;56&nbsp;(bytes)<br />0x00000013&nbsp;(RELENT)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8&nbsp;(bytes)<br />0x6ffffffe&nbsp;(VERNEED)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x8e48<br />0x6fffffff&nbsp;(VERNEEDNUM)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1<br />0x6ffffff0&nbsp;(VERSYM)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x8d84<br />0x00000000&nbsp;(NULL)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0<br /><br />将编译好的程序放入开发板的文件系统下:<br />[tekkamanninja@Tekkaman-Ninja&nbsp;src]$&nbsp;cp&nbsp;shttpd&nbsp;/home/tekkamanninja/working/nfs/rootfs/sbin/<br /><br />三、运行shttpd<br />因为shttpd&nbsp;没有配置文件,所以配置是由启动参数加的,比如我在开发板中操作如下:<br />[root@~]#shttpd&nbsp;-root&nbsp;/var/www&nbsp;-ports&nbsp;80&nbsp;&nbsp;&<br />意思是Web&nbsp;根目录为/var/www&nbsp;用80端口提供服务。<br /><br />还有别的参数如下:<br />[root@~]#shttpd&nbsp;--help<br />SHTTPD&nbsp;version&nbsp;1.39&nbsp;(c)&nbsp;Sergey&nbsp;Lyubka<br />usage:&nbsp;shttpd&nbsp;[options]&nbsp;[config_file]<br />&nbsp;&nbsp;-A&nbsp;<br />&nbsp;&nbsp;-root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Web&nbsp;root&nbsp;directory&nbsp;(default:&nbsp;.)<br />&nbsp;&nbsp;-index_files&nbsp;&nbsp;Index&nbsp;files&nbsp;(default:&nbsp;index.html,index.htm,index.php,index.cgi)<br />&nbsp;&nbsp;-ports&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Listening&nbsp;ports&nbsp;(default:&nbsp;80)<br />&nbsp;&nbsp;-dir_list&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Directory&nbsp;listing&nbsp;(default:&nbsp;1)<br />&nbsp;&nbsp;-cfg_uri&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Config&nbsp;uri<br />&nbsp;&nbsp;-protect&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;URI&nbsp;to&nbsp;htpasswd&nbsp;mapping<br />&nbsp;&nbsp;-cgi_ext&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CGI&nbsp;extensions&nbsp;(default:&nbsp;cgi,pl,php)<br />&nbsp;&nbsp;-cgi_interp&nbsp;&nbsp;&nbsp;CGI&nbsp;interpreter<br />&nbsp;&nbsp;-cgi_env&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Additional&nbsp;CGI&nbsp;env&nbsp;vars<br />&nbsp;&nbsp;-ssi_ext&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SSI&nbsp;extensions&nbsp;(default:&nbsp;shtml,shtm)<br />&nbsp;&nbsp;-auth_realm&nbsp;&nbsp;&nbsp;Authentication&nbsp;domain&nbsp;name&nbsp;(default:&nbsp;mydomain.com)<br />&nbsp;&nbsp;-auth_gpass&nbsp;&nbsp;&nbsp;Global&nbsp;passwords&nbsp;file<br />&nbsp;&nbsp;-auth_PUT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PUT,DELETE&nbsp;auth&nbsp;file<br />&nbsp;&nbsp;-access_log&nbsp;&nbsp;&nbsp;Access&nbsp;log&nbsp;file<br />&nbsp;&nbsp;-error_log&nbsp;&nbsp;&nbsp;&nbsp;Error&nbsp;log&nbsp;file<br />&nbsp;&nbsp;-mime_types&nbsp;&nbsp;&nbsp;Additional&nbsp;mime&nbsp;types&nbsp;list<br />&nbsp;&nbsp;-aliases&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Path=URI&nbsp;mappings<br />&nbsp;&nbsp;-acl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Allow/deny&nbsp;IP&nbsp;addresses/subnets<br />&nbsp;&nbsp;-inetd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Inetd&nbsp;mode&nbsp;(default:&nbsp;0)<br />&nbsp;&nbsp;-uid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Run&nbsp;as&nbsp;user<br /><br />这里说明一下&nbsp;-cgi_ext&nbsp;&nbsp;:shttpd没有CGI&nbsp;目录的概念,它是通过认文件扩展名来识别的。要运行CGI&nbsp;程序,默认情况下就要在编译好的程序后面加上&nbsp;“.cgi””pl””php”等后缀。而&nbsp;-cgi_ext&nbsp;&nbsp;是你可以自定义其后缀。<br /><br />四、开发板测试<br /><br />1)静态网页测试<br />在开发板的&nbsp;/var/www(由-root指定的根目录)放入测试网页:index.html&nbsp;<br />在HOST的浏览器中输入开发板地址,测试通过!<br /><br />2)CGI测试<br /><br />在&nbsp;/var/www&nbsp;(由-root指定的根目录)放入测试&nbsp;CGI&nbsp;程序:helloworldCGI.cgi<br /><br />在流览器中输入(开发板地址)192.168.1.2/helloworldCGI.cgi&nbsp;,测试通过!<br />&nbsp;<br /> &nbsp;&nbsp;<br />
tmake 发表于 2009-7-2 18:25 | 显示全部楼层

有很多东西我都不知道

  
lpc2410 发表于 2009-7-3 13:05 | 显示全部楼层

服务器

  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

49

主题

86

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部