移植apache到ARM 9

ARM 214浏览

 

<!--[if gte mso 9]><![endif]--><!--[if gte mso 9]><![endif]-->

<!--[if gte mso 10]><! /* Style Definitions */ table.MsoNormalTable{mso-style-name:普通表格;mso-tstyle-rowband-size:0;mso-tstyle-colband-size:0;mso-style-noshow:yes;mso-style-parent:"";mso-padding-alt:0cm 5.4pt 0cm 5.4pt;mso-para-margin:0cm;mso-para-margin-bottom:.0001pt;mso-pagination:widow-orphan;font-size:10.0pt;font-family:"Times
New Roman";mso-fareast-font-family:"Times New Roman";mso-ansi-language:#0400;mso-fareast-language:#0400;mso-bidi-language:#0400;}-->

 

Living with you!
欢迎转载
http://blog.csdn.net/livingpark
Living Park   

    按照网站http://www.diybl.com/course/6_system/linux/Linuxjs/20071019/78315.html的方法移植apachearm
9,
配置,编译,安装都没有问题,但是把apachectlhttpd移植上去后出现了/lib/libc.so.6:
 version   `GLIBC_2.2'   not   found  
的错误,应该是我交叉编译器使用glibc版本比arm
9
上系统的高导致的,其它地方没有找到好的解决办法,一般有两种:一是升高arm上的glibc,由于arm上系统并非本人所做,要找来用有些麻烦;二是降低交叉编译所在机子的glibc版本,找了一下glibc的安装,也比较麻烦。(或许您没有遇到这个版本问题,可能已经移植成功,可略去不看以获取时间或者作为休闲以使用时间,本文针对出现该glibc库版本无法兼容的情况。)

    解决的方法也很简单,编译时使用静态链接,这样编译出来的httpd就不依赖于具体的库了(但是大小可能会增加不少呢J),同样配置(CC=arm-linux-gcc./configure
–prefix=/www/apache/)
,然后静态链接编译make LDFLAGS=”-static”,出现gen_test_char的错误(使用本地编译版本的文件覆盖),重新静态链接编译出现ld:cannot
find –lap
的错误(并不会出现gen_uri_delims的错误),该错误出现在support,重新配置在./configure
后增加选项—without-support然后重新编译没有错误,正常安装。这样得到的httpd文件很大(我的是4M),要用arm-linux-strip处理一下,还有1M多点(还是很大,先将就用着)

     
进行移植,arm系统上面建立和编译环境相同的目录如:/www/apache/bin/,将apachectl放进该目录下,使用start启动发现需要httpd,将httpd文件放到相同目录下面,重新启动,还需要很重要的配置文件httpd.conf,放到/conf(自己建目录)目录下,重新运行,会找不到log(或者还有error_log等),按照提示建立目录并新建需要的文件(主要是文件名,空文件即可),最后放入一个网页(供测试用,index.html),放到一个目录下如/var/www/html/(不存在的目录自己创建),再次启动apachectl
start,
终于没有错误了(希望你到这里启动也没有问题了J)。这时通过另一台电脑访问你的网页如:http://10.10.200.101(使用自己arm板子上系统的IP),如果你的网页成功显示,则恭喜移植可以告一段落(休息一下),不过更有可能出现的是没有打开自己的网页,如果是这样还需要再进一步,打开httpd.conf去掉最后几行的注释如:<VirtualHost
*:80>

   ServerAdmin livingpark@abcdefg.com

   DocumentRoot /var/www/html

   ServerName living.example.com

   ErrorLog /www/apache/logs/error_log

# CustomLog logs/dummy-host.example.com-access_log common

</VirtualHost>

简单解释一下,ServerAdmin
你的邮箱(随便写一个吧J);最重要的DocumentRoot
存放网页的目录(一定要写对啦);ErrorLog
目录和文件应该已经创建过了,直接写上吧,其它不用理会,更新arm系统的httpd.conf文件,重新启动apachectl
restart,
再次访问arm IP,终于可以看见一个简单而朴素的网页了(如果还称得上是网页的话J)

先到这里啦,更多的东西,有时间再研究吧。