准备工作:
下载 apache_1.3.39.tar.gz
下载链接:http://download.csdn.net/detail/liangzhuangdongtou/9581434
解压缩apache_1.3.39.tar.gz到两个文件夹(apache_1.3.39_host和apache_1.3.39_target)
#tar xzvf apache_1.3.39.tar.gz
#mv apache_1.3.39 apache_1.3.39_host (用来进行本地编译)
#tar xzvf apache_1.3.39.tar.gz apache_1.3.39
#mv apache_1.3.39 apche_1.3.39_target (用来进行交叉编译)
1. 配置本地编译的源码
#cd ~/apache_1.3.39_host/src (进入的是src文件夹)
#./Configure (其中的C为大写)
#cd ..
#./configure
2.在正式开始编译之前,先使用vim对源码中的3个C文件进行修改。
apache_1.3.39_host/src/support/htpasswd.c 第101行、第550行
apache_1.3.39_host/src/support/htdigest.c 第74行、第161行、第219行
apache_1.3.39_host/src/support/logresolve.c 第74行、第281行、第329行
将上述位置的函数名getline全部修改为 _getline。
3.本地编译生成头文件test_char.h 和 uri_delims.h
#cd ~/ apache_1.3.39_host
#make
在apache_1.3.39_host/src/main目录下就会生成我们需要的文件test_char.h 和 uri_delims.h
4. 配置交叉编译的源码
#cd ~/apache_1.3.39_target
#CC=arm-linux-gcc ./configure --prefix=/usr/local/apache1.3.39/
修改交叉编译的源码
按照第2步给出的方法,修改以下3个C文件:
apache_1.3.39_target/src/support/htpasswd.c
apache_1.3.39_target/src/support/htdigest.c
apache_1.3.39_target/src/support/logresolve.c
5. 三次make完成交叉编译
#make
第一次报错:将apache_1.3.39_host/src/main目录下的test_char.h复制到apache_1.3.39_target/src/main目录下,使用的命令如下:
#cp ../apache_1.3.39_host/src/main/test_char.h src/main
然后第2次输入make命令
#make
将apache_1.3.39_host/src/main目录下的uri_delims.h复制到apache_1.3.39_target/src/main目录下,使用的命令如下:
#cp ../apache_1.3.39_host/src/main/uri_delims.h src/main
最后第3次输入make命令
#make
第3次make编译成功
6. 安装Apache到/home/lium/apache1.3.39
执行如下命令安装Apache:
#make install
7. 精简安装目录apache1.3.39
依次执行如下命令,删除apache最小系统中的冗余文件。
#cd ../apache1.3.39
#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左右。
8. 修改配置文件httpd.conf
使用vim打开apache1.3.39/conf目录下的httpd.conf,做如下修改。
第236行,将Port的值由8080改为8000;
第276行,使能ServerName并将其值改为192.168.99.187:8000,其中192.168.99.187即为400的IP地址;
第324行,将Allowoverride的值由None改为All;
9.运行新移植的apache
移植交叉编译好的Apache文件夹到arm板的相同位置
输入如下命令启动apache1.3.39:
#cd apache1.3.39/bin
#./httpd -f /home/lium/apache1.3.39/conf/httpd.conf start
(例如,我自己移植后的命令为:./httpd -f /usr/local/apache-1.3.39-arm/conf/httpd.conf start)
打开自己桌面PC上的浏览器,在地址栏中输入
如果页面左上角出现了“hello world!”,那么我们的apache就已经移植成功了!
10.apache设置为开机自动启动
etc\rc.d目录下的rcS中,添加内容:(其中apache-1.3.39-arm是对应的安装目录)
chmod -R 777 /usr/local/apache-1.3.39-arm
export PATH=/usr/local/apache-1.3.39-arm:$PATH
/usr/local/apache-1.3.39-arm/bin/httpd -f /usr/local/apache-1.3.39-arm/conf/httpd.conf start &