移植lighttpd Web服务器到ARM Linux系统

一、下载并解压
下载的官方主页:
我下载的是lighttpd-1.4.18
解压:
[tekkamanninja@Tekkaman-Ninja source]$ tar xjvf lighttpd-1.4.18.tar.bz2

二、配置和交叉编译
[tekkamanninja@Tekkaman-Ninja source]$ cd lighttpd-1.4.18
[tekkamanninja@Tekkaman-Ninja lighttpd-1.4.18]$ 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 ./configure -prefix=/lighttpd  -host=arm-9tdmi-linux-gnu --disable-FEUTARE -disable-ipv6 -disable-lfs  

这里特别注意一下:-prefix=/lighttpd ,我是将软件先装在Host的根目录下的lighttpd文件夹内,然后将其复制到开发板的根文件系统的根目录下。我之所以这样做是因为这个软件在make install时会配置他私有的库文件的路径,在开发板运行时会在-prefix= 的文件加下找他的私有库文件。而我又是交叉编译给开发板,这样配置比较方便移植。

--disable-FEUTARE -disable-ipv6 -disable-lfs 可以不加。

[tekkamanninja@Tekkaman-Ninja lighttpd-1.4.18]$ make

三、程序安装
[tekkamanninja@Tekkaman-Ninja lighttpd-1.4.18]$ make install

拷贝配置文件到开发板根文件系统的etc文件夹并进行适当修改:
[tekkamanninja@Tekkaman-Ninja lighttpd-1.4.18]$ cp doc/lighttpd.conf  /home/tekkamanninja/working/nfs/rootfs/etc/

[tekkamanninja@Tekkaman-Ninja lighttpd-1.4.18]$ kwrite  /home/tekkamanninja/working/nfs/rootfs/etc/lighttpd.conf 

必需修改的地方有:

server.document-root        = "/srv/www/htdocs/"
改为server.document-root        = "/home/lighttpd/html/"

你可以自己定义,这里就是设置web服务的根目录。

屏蔽一下语句,不然嵌入式这样的小系统下可能无法启动
#$HTTP["url"] =~ "\.pdf$" {
#  server.range-requests = "disable"
#}

开看程序需要那些动态库:
[tekkamanninja@Tekkaman-Ninja lighttpd-1.4.18]$ ~/working/gcc4.1.1/gcc-4.1.1-glibc-2.3.2/arm-9tdmi-linux-gnu/bin/arm-9tdmi-linux-gnu-readelf -d src/lighttpd

Dynamic section at offset 0x20790 contains 21 entries:
  Tag        Type                         Name/Value
 0x00000001 (NEEDED)                     Shared library: [libdl.so.2]
 0x00000001 (NEEDED)                     Shared library: [libc.so.6]
 0x0000000c (INIT)                       0xc200
 0x0000000d (FINI)                       0x231c0
 0x00000004 (HASH)                       0x8128
 0x00000005 (STRTAB)                     0xa338
 0x00000006 (SYMTAB)                     0x8b48
 0x0000000a (STRSZ)                      5946 (bytes)
 0x0000000b (SYMENT)                     16 (bytes)
 0x00000015 (DEBUG)                      0x0
 0x00000003 (PLTGOT)                     0x30860
 0x00000002 (PLTRELSZ)                   960 (bytes)
 0x00000014 (PLTREL)                     REL
 0x00000017 (JMPREL)                     0xbe40
 0x00000011 (REL)                        0xbe00
 0x00000012 (RELSZ)                      64 (bytes)
 0x00000013 (RELENT)                     8 (bytes)
 0x6ffffffe (VERNEED)                    0xbd70
 0x6fffffff (VERNEEDNUM)                 2
 0x6ffffff0 (VERSYM)                     0xba72
 0x00000000 (NULL)                       0x0

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwzyzz.html