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