开发板上需要运行一个web服务器,经过比较选择了appweb,现记录一下移植过程。
1.前言
1.1开发环境参数
开发板:mini2440 64MB内存 256MB Flash
PC系统:X86 ubuntu10.04 gcc:4.4.3
交叉编译器:gcc 4.4.3
1.2AppWeb简介
官网:http://appwebserver.org/
Appweb是一个嵌入式HTTP Web服务器,功能很强大,号称“mini阿帕奇”
具有以下特性:
Full HTTP/1.1 web server
Multi-threaded, event-driven core: fastest performance in its class
Dynamically loadable modules
Server-side JavaScript web framework
In-memory PHP module
In-process CGI as well as traditional CGI
Apache compatible configuration and logging
Basic and Digest Authentication
Secure Socket Layer (SSL/TLS)
Session state data management
HTTP Client program and library
ROMable web pages and configuration files
Cross-platform and portable
Embeddable in applications and devices (supports XIP)
Modular source code and documentation provided
http://appwebserver.org/products/appweb/features.html
2.移植
2.1 下载
去网址:http://appwebserver.org/downloads/appweb/download.esp下载appweb的源码,我下载的版本是appweb5.0
2.2 交叉编译
(1)解压源码文件,在projetcs文件夹底下找到appweb-linux-default.mk文件和appweb-linux-default-me.h文件将其复制名为appweb-linux-default-arm.mk文件和appweb-linux-default-me-arm.h
(2)修改appweb-linux-default-arm.mk文件中的内容:
(i)ARCH ?= arm
(ii)CC ?= arm-linux-gcc
(iii)把文件中3处appweb-linux-default-me.h改为appweb-linux-default-me-arm.h
(iiii)把文件appweb-linux-default-me-arm.h中的#define ME_COMPILER_HAS_SYNC64 1注释掉,不然会报错“undefined reference to `__sync_add_and_fetch_8'collect2: ld returned 1 exit status”
//#define ME_COMPILER_HAS_SYNC64 1
(3)编译
make -f projects/appweb-linux-default-arm.mk
编译完后会在../appweb-5.0.0-rc1/linux-arm-default文件下生成目标文件将../appweb-5.0.0-rc1/linux-arm-default/bin文件夹下的所有文件拷贝到开发板上的bin目录下或是/usr/bin目录下
2.3测试
在开发板上输入命令:appweb --version 会打印出版本信息:5.0.0-rc1
说明appweb移植正确
要使用appweb运行网站,参见我的这篇博客http://blog.csdn.net/xiaominthere/article/details/38756421,里面有详细的介绍