APPWEB + PHP5 + SQLITE3 + MATRIXSSL移植到ARM LINUX
一、主机环境
Linux version 2.6.35(Ubuntu 10.10)
gcc version 4.4.5
arm-linux-gcc 3.4.1
二、相关源码下载
zlib-1.2.3.tar.gz下载
libxml2-2.7.8.tar.gz 下载
appweb-src-3.3.2-0.tgz 下载
php-5.3.10.tar.bz2 下载
sqlite-amalgamation-3.6.11.tar.gz 下载
matrixssl-1.8.3.tar.gz 下载
arm-linux-gcc-3.4.1.tar.bz2 下载
三、建立交叉编译环境
1、打开终端,进入主目录(我这里的主目录为/home/ysj265)
$ cd /home/ysj265
2、在该目录下新建两个文件夹arm arm/code
$ mkdir arm arm/code
3、进入/home/ysj265/arm/code
$ cd arm/code
4、拷贝刚才下载的7个文件到code目录
5、解压缩arm-linux-gcc-3.4.1.tar.bz2并拷贝到根目录
$ sudo tar xjvf arm-linux-gcc-3.4.1.tar.bz2 -C /
6、设置环境变量
$ sudo gedit /etc/profile
在最后面加上如下语句
$ export PATH=/usr/local/arm/3.4.1/bin:$PATH
$ export CC=arm-linux-gcc
$ export AR=arm-linux-ar
$ export LD=arm-linux-ld
$ export NM=arm-linux-nm
$ export STRIP=arm-linux-strip
$ export RANLIB=arm-linux-ranlib
保存文件并关闭。
7、使环境变量立即生效
$ source /etc/profile
8、测试编译环境是否安装成功
$ which arm-linux-gcc
如果显示/usr/local/arm/3.4.1/bin/arm-linux-gcc表示安装成功
四、编译代码
1、移植zlib
解压zlib-1.2.3.tar.gz
$ tar xzvf zlib-1.2.3.tar.gz
进入目录
$ cd zlib/1.2.3
修改Makefile
$ gedit Makefile
CC=cc 修改成CC=arm-linux-gcc
AR=ar rc修改成AR=arm-linux-ar rc
RANLIB=ranlib修改成AR=arm-linux-ranlib
prefix = /usr/local修改成prefix = /home/ysj265/arm/zlib
保存并关闭gedit
执行make&&make install即可完成zlib移植
$ make&&make install
2、移植libxml2
解压libxml2-2.7.8.tar.gz$ tar xzvf libxml2-2.7.8.tar.gz
进入目录
$ cd libxml2-2.7.8
配置ibxml2
$ ./configure --prefix=/home/ysj265/arm/libxml2 --host=arm-linux
执行make&&make install即可完成libxml2移植
$ make&&make install
3、移植sqlite3
解压sqlite-amalgamation-3.6.11.tar.gz
$ tar xzvf sqlite-amalgamation-3.6.11.tar.gz
进入目录
$ cd sqlite-3.6.11
配置sqlite3
$ ./configure --prefix=/home/ysj265/arm/sqlite3 --host=arm-linux
执行make&&make install即可完成sqlite3移植
$ make&&make install
4、移植php5
解压php-5.3.10.tar.bz2
$ tar xjvf php-5.3.10.tar.bz2
进入目录
$ cd php-5.3.10
配置php5
$ ./configure --prefix=/home/ysj265/arm/php5 --host=arm-linux --with-sqlite=shared
--enable-pdo=shared --with-pdo-sqlite=shared --with-libxml-dir=/home/ysj265/arm/libxml2
--with-zlib-dir=/home/ysj265/arm/zlib --disable-all --enable-pdo=shared
--enable-embed=shared --with-sqlite3=/home/ysj265/arm/sqlite3
--with-config-file-path=/mnt/appweb --with-config-file-scan-dir=/mnt/appweb --enable-session
修改Makefile
$ gedit Makefile
首先在开始出添加LDFLAGS += -ldl ,这里是为了链接dlopen库。
然后修改main/php.h 在开始处添加#define HAVE_LIBDL 1 ,这个宏是为了交叉编译时强制使用dlopen。
紧接着修改ext/standard/dl.c ,这段代码中添加#include <dlfcn.h> ,这个是dlopen的头文件。
#include <stdio.h>
#include <dlfcn.h>
执行make&&make install即可完成php5移植
$ make&&make install
5、移植matrixssl
解压matrixssl-1.8.3.tar.gz
$ tar xzvf matrixssl-1.8.3.tar.gz
进入目录
$ cd matrixssl-1.8.3/matrixssl/src
修改Makefile
$ gedit Makefile
CC=cc 修改成CC=arm-linux-gcc
AR=ar rc修改成AR=arm-linux-ar rc
RANLIB=ranlib修改成AR=arm-linux-ranlib
STRIP=strip修改成AR=arm-linux-strip
prefix = /usr/local修改成prefix = /home/ysj265/arm/matrixssl
保存并关闭gedit
执行make&&make install即可完成matrixssl移植
$ make&&make install
6、移植appweb
解压appweb-3.3.2.tgz
$ tar xzvf appweb-3.3.2.tgz
进入目录
$ cd appweb-3.3.2
配置appweb
$ ./configure --host=arm-s3c2410-linux --build=i686-pc-linux --enable-shared --shared
--disable-static --port=80 --disable-multi-thread --type=RELEASE --prefix=/mnt/appweb
--webDir=/var/web --disable-test --disable-samples
--with-php=/home/ysj265/arm/code/php-5.3.10
--with-matrixssl=/home/ysj265/arm/code/matrixssl-1.8.3/matrixssl
执行make&&make install即可完成appweb移植
$ sudo make&&make install
四、复制文件并配置网站
1、准备文件
$ mkdir ~/appweb
$ cd ~/appweb
$ cp -rf /mnt/appweb/lib/appweb/bin /mnt/appweb/lib/appweb/lib /mnt/appweb/lib/appweb/modules .
$ cp -rf /etc/appweb/conf /etc/appweb/ssl /etc/appweb/appweb.conf /etc/appweb/groups.db
/etc/appweb/mime.types /etc/appweb/php.ini /etc/appweb/users.db .
$ arm-linux-strip bin/* modules/* lib/*
2、修改appweb.conf
$ gedit appweb.conf
修改ServerRoot "/etc/appweb"为ServerRoot "/mnt/appweb"
修改DocumentRoot "/var/web"为您的网站目录
修改LoadModulePath "/mnt/appweb/lib/appweb/modules"为LoadModulePath "/mnt/appweb/modules"
3、修改php.ini
$ gedit php.ini
在extension=php_zip;的下面添加如下配置
extension=pdo.so
extension=pdo_sqlite.so
extension=sqlite.so
修改extension_dir = "/mnt/appweb/lib"
4、拷贝appweb到目标板的/mnt目录
5、拷贝libz.so.1.2.3、libxml2.so.2.7.8、librt-2.3.2.so、libdl-2.3.2.so、libcrypt-2.3.2.so到/lib并创建符号链接
6、注册环境变量并启动服务
$ export LD_LIBRARY_PATH=/mnt/appweb/lib:$LD_LIBRARY_PATH
$ cd /mnt/appweb
$ chmod +x ./bin/appweb
$ ./bin/appweb --config appweb.conf