微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > APPWeb+PHP5+SQLite3在S3C6410上移植

APPWeb+PHP5+SQLite3在S3C6410上移植

时间:11-10 来源:互联网 点击:
我自己是移植Lighttpd+PHP+SQLite3的,由于忘了PHP怎么移植,所以就转别人的,免得以后再移植会忘记

原作者:

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

整数运算能力检测
(1+1运算300万次)

7.439s

15.547s

0.535s

浮点运算能力检测
(圆周率开平方300万次)

42.599s

无法测出

1.607s

数据I/O能力检测
(读取10K文件1万次)

0.961

11.112s

0.058s

通过上述对比分析,在单线程模式下系统性能好于多线程模式,所以本移植中PHP配置为单线程模式,另外AppWeb也需要禁用多线程模式。

配置完成之后,需要检查生成的Makefile文

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top