移植Sqlite2+PHP5.2+apache1.3到ARM平台
提醒:在整个移植的过程中注意各软件包的版本
本文中Sqlite使用的是Sqlite2.8.17.tar.gz,Apache使用的是1.3.39,PHP使用的5.2.13
一:Sqlite数据库移植
1)下载sqlite2.8.17.tar.gz,(版本号至少应该保存前两位对应)
2)把这个压缩包放到/home/chen的目录下,并且解压。再建立一个sqlite目录,作为安装目录。
3)进入到sqlite2.8.17目录下,执行如下命令
CC=arm-linux-gcc ./configure --prefix=/home/chen/sqlite --host=arm-linux
4)make 5)make install 。安装成功后,在sqlite这个目录下有三个文件夹:bin、lib、include
6)进入lib目录中,arm-linux-strip libsqlite.so.0.8.6
7)将bin目录下的sqlite拷贝到目标板的/usr/bin目录下。
8)将lib目录下的libsqlite.so.0.8.6拷贝到/usr/lib目录下。
9)登录到开发板中,进入/usr/lib目录,创建一个符号链接ln -s libsqlite.so.8.6 libsqlite.so.0
到此sqlite数据库就算是移植完毕了。在开发板上面运行sqlite看到如下画面,则sqlite安装成功
二:Apache服务器移植
1)下载apache1.3.39的软件包。apache1.3.39.tar.gz,注意版本的移植性。
2)在/home/chen/目录下建立两个文件夹:arm和source
3)把软件包分别拷贝到arm与source这两个文件夹中,并使用tar -xzvf apache1.3.39.tar.gz进行解压。
4)进入/home/chen/source/apache1.3.39/src这个文件目录中。执行./Configure。生成一个Makefile文件。
5)返回到/home/chen/source/apache1.3.39这个目录中,执行./configure。再执行make。这时可能有两种情况
(①)成功运行出make,无需额外的操作。
(②)make出错,错误如下:
If you don't do this, the installation will fail because of the following error:htpasswd.c:101: error: conflicting types for 'getline'/usr/include/stdio.h:651: note: previous declaration of 'getline' was heremake[2]: *** [htpasswd.o] Error 1make[2]: Leaving directory `/home/ISPConfig-2.2.stable/install_ispconfig/compile_aps/apache_1.3.41/src/support'make[1]: *** [build-support] Error 1make[1]: Leaving directory `/home/ISPConfig-2.2.stable/install_ispconfig/compile_aps/apache_1.3.41'make: *** [build] Error 2ERROR: Could not make Apache
这时打开错误提示的文件/usr/include/stdio.h,找到对应的行,把getline改成parseline(记住在编译完成所有工作时,把他修改回去。)
6)观察/home/chen/source/apache1.3.39/src/main这个目录下是否有gen_test_char和gen_uri_delims这个两个可执行文件。如果上述步骤没有遗漏,应该会出现这两个可执行文件
7)进入/home/chen/arm/apache1.3.39/src中,执行
1)exprort CC="arm-linux-gcc"
2)./Configure生成Makefile文件。会出现Syntax error:word unexpected(expecting")")这种错误。
8)修改arm/apache1.3.39/src/main目录下的Makefile文件。把
./gen_uri_delims >uri_delims.h
改为:
uri_delims.h: gen_uri_delims
/home/chen/source/apache_1.3.39/src/main/gen_uri_delims >uri_delims.h
把test_char.h: gen_test_char
./gen_test_char >test_char.h
改为:
test_char.h: gen_test_char
/home/chen/source/apache_1.3.39/src/main/gen_test_char >test_char.h
9)进入到/home/chen/arm/apache1.3.39目录下。执行
(1)export CC="arm-linux-gcc"
(2) ./configure ---->make------->make install
看到如下信息
+--------------------+
| You now have successfully built and installed the |
| Apache 1.3 HTTP server. To verify that Apache actually |
| works correctly you now should first check the |
| (initially created or preserved) configuration files |
| |
| /usr/local/apache/conf/httpd.conf
| |
| and then you should be able to immediately fire up |
| Apache the first time by running: |
| |
| /usr/local/apache/bin/apachectl start
| |
| Thanks for using Apache. The Apache Group |
| http://www.apache.org/ |
+--------------------+
10)进入/usr/local目录中,可以看到多了一个apache的目录,现在把这个目录打包,使用如下命令
tar -czvf apache.tar.gz apache/,在使用ftp等方式把apache解压出来,放入到开发板的/usr/local中。
11)下面须在开发板中/etc的目录中修改两个配置文件,passwd和group文件,如果没有这两个文件就自己建立;
文件一:passwd (如果这个文件中已经有内容了,只需要添加缺少的项就行)
root::0:0:root:/:/bin/ash
nobody::65534:65533:nobody:/:/bin/ash
文件二:group(如果这个文件中已经有内容了,只需要添加缺少的项就行)
nobody::65533:
nogroup::65534:nobody
root::0:
users::100
三:PHP5.2.13的移植
在安装PHP之前需要进行libxml与zlib的安装。所以我们分为3部进行安装PHP,
一:libxml的安装
1)把libxml2-2.8.0解压到/usr/src目录中。在进入libxml2-2.8.0这个目录中去。
2)运行 CC=arm-linux-gcc ./configure --host=arm-linux --target=arm --prefix=/opt/libxml
3)make 再 make install
4)把libxml2.so.2.8.0传到板子的/usr/lib中,并且建立两个符号链接名字分别为libxml2.so和libxml2.so.2
二:zlib的安装
1)把zlib-1.2.7解压到/usr/src目录中,在进入到zlib-1.2.7这个目录中去。
2)运行CC=arm-linux-gcc ./configure --prefix=/opt/zlib
3)make 再 make install
4)把libz.so.1.2.7传到板子的/usr/lib中,并且建立两个符号链接名字分别为libz.so和libz.so.1
三:php的安装
1)把php-5.2.13.tar.gz拷贝到/usr/src目录下。并且在此目录中建立一个temp文件夹。(在把php-5.2.13.tar.gz拷贝到temp文件中,这个里面主要是放PC体系结构的PHP的一个可执行文件,后面交叉编译php的时候回用到)
2)首先进入到temp目录中,解压php,再进入/usr/src/temp/php-5.2.13目录中,直接./configure即可。
再 make 接着make install
3)进入到/usr/src目录,解压php,进入到/usr/src/php-5.2.13目录中。
4)export CC=arm-linux-gcc 再 ./configure --host=arm-linux--prefix=/opt/php5 --enable-pdo --enable-sockets --with-sqlite --with-pdo-sqlite --with-zlib-dir=/opt/zlib --with-libxml-dir=/opt/libxml --without-iconv
5)首先修改php的Makefile.在开始出添加LDFLAGS += -ldl ,这里是为了链接dlopen库然后修改main/php.h 在开始处添加#define HAVE_LIBDL 1 ,这个宏是为了交叉编译时强制使用dlopen。紧接着修改ext/standard/dl.c ,这段代码中添加#include <dlfcn.h> ,这个是dlopen的头文件。如下
install-pear-installer: $(SAPI_CLI_PATH)/usr/src/temp/php-5.2.13/sapi/cli/php $(PEAR_INSTALL_FLAGS) pear/install-pear-nozlib.phar -d "$(peardir)" -b "$(bindir)" ${PEAR_PREFIX} ${PEAR_SUFFIX}7)make 再 make install
8)把当前目录下的php.ini-dist拷贝到/opt/php5/lib中去。
9)进入/opt中,把其中的php5这个文件夹传递到/usr/local中去。
在进行上诉步骤后即可移植成功。以上作为参考,我会把编译成功的打包上传到资源中。如下链接
apache:http://download.csdn.net/detail/cangencong/4553164
php:http://download.csdn.net/detail/cangencong/4553169
sqlite2:http://download.csdn.net/detail/cangencong/4553173
zlib:http://download.csdn.net/detail/cangencong/4553175
libxml:http://download.csdn.net/detail/cangencong/4553177