一、主机环境
Linux version 3.13.0-116-generic(Ubuntu 14.04)
gcc version 4.8.4
arm-linux-gnueabihf
二、相关源码下载
zlib-1.2.3.tar.gz
libxml2-2.7.8.tar.gz
appweb-3.3.2-0-src.tgz
php-5.2.17.tar.gz
sqlite-autoconf-3220000.tar.gz
下载连接:
链接: https://pan.baidu.com/s/195ymiNR4MhTsRoA6RJtPbA 密码: 4w88
三、建立交叉编译环境
1、移植交叉编译器到宿主机
2、设置好环境变量
打开配置文件
$ sudo gedit /etc/profile
//设置交叉编译器的路径
export PATH=$PATH:/opt/A6G2C/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/bin
# 配置编译器
export CC=arm-linux-gnueabihf-gcc
export AR=arm-linux-gnueabihf-ar
export LD=arm-linux-gnueabihf-ld
export RANLIB=arm-linux-gnueabihf-ranlib
export STRIP=arm-linux-gnueabihf-strip
export CC_FOR_BULID=gcc
保存文件并关闭。
3、使环境变量立即生效
$ source /etc/profile
4、测试编译环境是否安装成功
$ which arm-linux-gnueabihf--gcc
如果显示/opt/A6G2C/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/bin/arm-linux-gnueabihf--gcc表示安装成功
5、下载的5个文件到/opt/webAPP/6G2C/目录
四、编译代码
1、移植zlib
解压zlib-1.2.3.tar.gz
$ tar xzvf zlib-1.2.3.tar.gz
进入目录
$ cd zlib/1.2.3
$ ./configure --prefix=/opt/webAPP/6G2C/arm/zlib --shared--enable
加上 --shared--enable 会生成libz.so.1.2.3 动态库
执行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=/opt/webAPP/6G2C/arm/libxml2 --host=arm-linux-gnueabihf
执行make&&make install即可完成libxml2移植
$ make&&make install
3、移植sqlite3
解压sqlite-autoconf-3220000.tar.gz
$ tar xzvf sqlite-autoconf-3220000.tar.gz
进入目录
$ cd sqlite-autoconf-3220000
配置sqlite3
$ ./configure --prefix=/opt/webAPP/6G2C/arm/sqlite3 --host=arm-linux-gnueabihf
执行make&&make install即可完成sqlite3移植
$ make&&make install
4、移植php5解压php-5.2.17.tar.gz
$ tar xjvf php-5.2.17.tar.gz
进入目录
$ cd php-5.2.17
配置php5
$ ./configure --prefix=/opt/webAPP/6G2C/arm/php5 --host=arm-linux-gnueabihf --with-sqlite=shared --enable-pdo=shared --with-pdo-sqlite=shared --with-libxml-dir=/opt/webAPP/6G2C/arm/libxml2 --with-zlib-dir=/opt/webAPP/6G2C/arm/zlib --disable-all --enable-pdo-=shared --enable-pdo-sqlite --enable-pdo-sqlite-utf8 --enable-embed=shared --with-sqlite3=/opt/webAPP/6G2C/arm/sqlite3 --with-config-file-path=/mnt/appweb --with-config-file-scan-dir=/usr/local/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的头文件。
执行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
./configure --prefix=/opt/webAPP/6G2C/arm/matrixssl --host=arm-linux-gnueabihf
执行make&&make install即可完成matrixssl移植
$ make&&make install
6、移植appweb
解压appweb-3.3.2-0-src.tgz
$ tar xzvf appweb-3.3.2-0-src.tgz
进入目录
$ cd appweb-3.3.2
配置appweb
$ ./configure --host=arm-linux-gnueabihf --build=i686-pc-linux --port=80 --disable-multi-thread --type=RELEASE --enable-shared --shared --disable-static --prefix=/opt/webAPP/6G2C/arm/appweb --webDir=/opt/web --disable-test --disable-samples --with-php=/opt/webAPP/6G2C/php-5.2.17 --sysconfdir=/opt/webAPP/6G2C/arm/appweb/
执行make&&make install即可完成appweb移植
$ sudo make&&make install
四、复制文件并配置网站
1、准备文件
$ mkdir cd /opt/webAPP/6G2C
$ mkdir appweb
$ cd appweb
$ cp -rf /opt/webAPP/6G2C/arm/appweb/lib/appweb/bin /opt/webAPP/6G2C/arm/appweb/lib/appweb/lib /opt/webAPP/6G2C/arm/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-gnueabihf-strip bin/* modules/* lib/*
2、修改appweb.conf
$ gedit appweb.conf
修改ServerRoot "/etc/appweb"为ServerRoot "/usr/local/appweb" 为你移植的目录
修改DocumentRoot "/opt/web"为您的网站目录
修改LoadModulePath "/mnt/appweb/lib/appweb/modules"为LoadModulePath "/mnt/appweb/modules"
修改User nobody 为 User root 否则会出现无法创建和打开数据库
3、修改php.ini
$ gedit php.ini
在extension=php_zip;的下面添加如下配置
extension=pdo.so
extension=pdo_sqlite.so
extension=sqlite.so
修改extension_dir = "/usr/local/appweb/lib"
4、拷贝appweb到目标板的/usr/local目录
拷贝/etc/init.d/appweb 到目标板的 /etc/init.d/ 目录 并重命名为S82appweb 增加S开头是开机自启动 82 代表启动顺序 (致远开发板)
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=/usr/local/appweb/lib:$LD_LIBRARY_PATH
$ cd /usr/local/appweb
$ chmod +x ./bin/appweb
$ ./bin/appweb --config appweb.conf
参考:http://blog.csdn.net/ysj265/article/details/7251080