APPWeb+PHP5+SQLite3在S3C6410上移植
原作者:
hwwr112100
网址:http://blog.csdn.net/hwwr112100/article/details/8249294
相关支持库移植
主要包括libiconv、zlib以及加密服务组件matrixssll。
下载Embedthis提供的第三方工具包,采用git从GitHub获取packages软件包,命令如下。
gitclone http://github.com/embedthis/packages
如果下载失败,可以在直接在https://github.com/embedthis/packages中选择下载ZIP包,内容包括:
其中,libiconv-1.11、zlib和matrixssl中的matrixssl1-8-8-open被本次移植采用,php目录中的PHP版本较高,并且默认目标平台为Linux和Windows平台,不支持交叉编译,编译时会出现诸多问题,本次移植并未采用。
1编译libiconv
libiconv库是编译xmlrpc必须的支持库,选择libiconv-1.11,注意:最新版iocnv,编译时会可能会出现诸多问题,这里不建议采用。
首先设置CC、AR等环境变量的路径(假设arm-linux-gcc工具安装在/usr/local/arm/4.2.2-eabi/目录下),具体设置如下所示。
export CC=/usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-gcc
export AR=/usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-ar
export LD=/usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-ld
export RANLIB=/usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-ranlib
export STRIP=/usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-strip
export CC_FOR_BUILD=gcc
配置:
./configure --build=arm-linux --host=i686-linux --prefix=/usr/local/iconvarm
配置完成后,编译安装:
make
make install
--prefix参数指定libconv库安装的位置,在编译PHP时需要引用该位置。
2编译libz.so
zlib是PHP必须的支持库,这里采用的版本为zlib-1.2.6。注意:CC、AR等环境变量选择为arm-linux-xx。
./configure --prefix=/usr/local/zlib
配置成功之后,编译:
make clean
make
--prefix参数指定libz库安装的位置,编译PHP时,加入--with-zlib-dir=/usr/local/zlib编译参数。
3编译libxml2.so
源码包版本为libxml2-2.7.4,libxml2库同样是PHP所必须的支持库。
./configure --build=arm-linux --host=i686-linux --disable-ipv6 --prefix=/usr/local/libxmlarm
配置成功之后,编译安装:
make
make install
编译PHP
当上述支持库编译完成之后,进行PHP编译。注意:上述编译得到的*.so文件格式必须为如下形式:
libz.so.1.2.6: ELF32-bit LSB shared object,ARM, version 1 (SYSV), dynamically linked, not stripped
另外,正常编译得到的库文件包含调试信息,可以使用arm-linux-strip工具去除不必要的调试信息,以减小文件体积。
PHP采用的版本为PHP-5.2.17(PHP-5.3.8会出问题,如无法正常运行,服务器自动重启,建议采用此版本)。
PHP配置参数如下:
./configure --target=arm --host=arm-linux --disable-debug --disable-rpath --disable-cli--enable-bcmath --enable-calendar --disable-maintainer-zts--enable-embed=shared --enable-ftp--enable-inline-optimization --enable-magic-quotes --enable-safe-mode --enable-sockets --enable-wddx --sysconfdir=/etc/appweb--with-pic --with-exec-dir=/etc/appweb/exec--with-regex=system --with-pear --with-xmlrpc --with-zlib-dir=/usr/local/zlib --with-libxml-dir=/usr/local/libxmlarm --with-iconv-dir=/usr/local/iconvarm/
注意:在使能多线程模式,即附带参数--enable-maintainer-zts编译时,报错信息如下:
上述错误可以通过修改configure文件解决,修改内容如下:
将{ echo "configure: error: Your system seems to lack POSIXthreads." 1>&2; exit 1; }
替换为:
{ echo"configure: error: Your system seems to lack POSIX threads."1>&2; }#exit 1; }
在多线程与单线程模式下,PHP脚本运行性能对比(由雅黑PHP探针测得数据),如下表所示。
表2 PHP性能对比
性能参数 | 单线程模型 ARM11 667MHz | 多线程模型 ARM11 667MHz | 美国 IXwebhosting.com 4 x Xeon E5530 @ 2.40GHz |
整数运算能力检测 | 7.439s | 15.547s | 0.535s |
浮点运算能力检测 | 42.599s | 无法测出 | 1.607s |
数据I/O能力检测 | 0.961 | 11.112s | 0.058s |
通过上述对比分析,在单线程模式下系统性能好于多线程模式,所以本移植中PHP配置为单线程模式,另外AppWeb也需要禁用多线程模式。
配置完成之后,需要检查生成的Makefile文
APPWebPHP5SQLite3S3C641 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)