最近在做Apache PHP 和Sqlite的移植 一开始遇到了很多困难,在网上查了一些资料,
于是记录了下来,综合其他网友的博客以及我自己遇到的问题,整理了这篇博客,希望能帮到你们.借鉴于学长的博客:http://blog.sina.com.cn/s/blog_166ae58120102xecu.html学长的博客真的不错!
1.准备工作: 下载apache_1.3.39.tar.gz 下载链接 http://download.csdn.net/detail/liangzhuangdongtou/9581434
(以下目录都是我自己虚拟机上的,可根据自己的情况改变)
将此包解压缩并拷贝到两个文件夹: /usr/local/local_apache 和 /usr/local/arm_apache
也可以把压缩包拷贝到指定文件夹后在解压缩
#tar -zxvf apache_1.3.39.tar.gz
#cp -r apache_1.3.39 /usr/local/local_apache(用来进行本地编译)
#cp -r apache_1.3.39 /usr/local/arm_apache(用来进行交叉编译 即用arm-linux-gcc编译)
一 .本地编译
1. 配置本地编译的源码:
# cd /usr/local/local_apache/apache_1.3.39/src
# ./Configure (其中C是大写)执行该命令后会生成一个Makefile文件
# cd ..
#./configure (c是小写) 执行该命令后同样会生成一个Makefile文件
2.在正式编译之前,需要先对源码中的三个c文件进行修改
将下面c文件中的函数名 getline 全部修改为_getline
#vim local_apache/src/support/htpasswd.c 第101行、第550行
#vim local_apache/src/support/htdigest.c 第74行、第161行、第219行
#vim local_apache/src/support/logresolve.c 第74行、第281行、第329行
目的是避免与库函数的函数名重复导致出错
3.本地编译生成头文件test_char.h 和 uri_delims.h
#cd 到local_apache/apache1.3.39
#make
在该目录的/src/main 目录下就会生成我们需要的文件test_char.h 和 uri_delims.h
二.交叉编译
1. 配置交叉编译的源码
# cd /usr/loacl/arm_apache/apache_1.3.39
#CC=arm-linux-gcc ./configure --prefix=/usr/local/etc_apache
注意:也可以 CC=(完整路径)/arm-linux-gcc --prefix=(已经存在的文件夹,可根据自己情况而定,生成的文件就
该目录下,如果不指定 默认在/usr/local/apache下 apache是自动创建的)
2.根据本地编译的第二步 修改以下三个文件
#vim local_apache/src/support/htpasswd.c 第101行、第550行
#vim local_apache/src/support/htdigest.c 第74行、第161行、第219行
#vim local_apache/src/support/logresolve.c 第74行、第281行、第329行
3. 三次make完成交叉编译
# cd /usr/loacl/arm_apache/apache_1.3.39
# make
第一次报错 将local_apache/apache_1.3.39/src/main 目录下的 test_char.h复制 arm_apache/apache_1.3.39/src/ma
目录下
#cp /usr/loacl/local_apache/apache_1.3.39/src/main/test_char.h
/usr/loacl/arm_apache/apache_1.3.39/src/main
然后第二次输入 make 命令#make
第二次报错 将local_apache/apache_1.3.39/src/main 目录下的uri_delims.h复制arm_apache/apache_1.3.39/src/main 目录下
#cp /usr/loacl/local_apache/apache_1.3.39/src/main/uri_delims.h
/usr/loacl/arm_apache/apache_1.3.39/src/main
第三次make#make OK成功!
4.安装apache到/usr/local/etc_apache (即prefix指定的目录)
执行以下命令安装apache
#make install
三 . 精简安装目录(/usr/local/etc_apache)
个人建议在精简前先复制一份
#cp /usr/local/etc_apache /usr/local/copy_etc_apache
#rm -rf cgi-bin icons include libexec man proxy
#rm -rf htdocs/*
#cd bin/
#rm ab apxs dbmmanage logresolve apachectl checkgid htdigest rotatelogs
#cd ../conf
#rm *.default
#rm access.conf magic srm.conf
#cd ..
依次执行如下命令,创建能显示“hello world!”的主页。
#cat>htdocs/index.html<<EOF
#hello world!
#EOF
执行如下命令,减小bin目录下的可执行文件的大小。
#arm-linux-strip bin/*
执行如下命令,在apache1.3.39目录下创建passwd子目录,将来用以存储用户密码文件。
#mkdir passwd
精简完毕后,我们最终得到的apache1.3.39总大小在700~800 kB左右。
四 . 修改配置文件httpd.conf
用vim 打开etc_apache/conf目录下的httpd.conf ,做如下修改
第236行,将Port的值由8080改为8000;
第251行,将User的值由nogroup改为开发板已经存在的用户;
第251行,将Group的值由nogroup改为开发板已经存在的组;
第276行,使能ServerName并将其值改为192.168.1.222:8000,其中192.168.1.222 即为400的IP地址;(ip根据自己虚拟 机的ip设定 需要和虚拟机在同一个网段) 第324行,将Allowoverride的值由None改为All;
五 . 在开发板上修改开发板的ip
ipconfig eth0 192.168.1.222 (我自己的)即和配置文件httpd.conf 第276行的ip相 同
移植交叉编译好的Apache文件夹到arm板的相同位置
输入如下命令启动apache1.3.39:
#cd /usr/local/etc_apache/bin
#./httpd -f /usr/local/etc_apache/conf/httpd.conf start
(例如,我自己移植后的命令为:./httpd -f /usr/local/etc_apache/conf/httpd.conf start )
打开自己桌面PC上的浏览器,在地址栏中输入
http://192.168.1.222:8000
如果页面左上角出现了“hello world!”,那么我们的apache就已经移植成功了!
注意:开发板需要连网线