一 环境
   fedora 14  gcc 4.5.1
   arm-linux-gcc 4.4.1
   apache_1.3.39

二 编译过程

1. 从http://www.apache.org/ 上下载apache_1.3.39.tar.gz,然后解压缩两次,两个目录命名为apache_1.3.39_x86和apache_1.3.39_arm。
2.进入apache_1.3.39_x86 运行:./configure
3. make 完成后不用make install
问题: htpasswd.c定义的静态函数和库函数类型冲突,可能是gcc版本太高的原因,既然是静态的把htpasswd.c的getline改成sgetline,只有一处调用该函数。

htpasswd.c:101:12: 错误:与‘getline’类型冲突
/usr/include/stdio.h:673:18: 附注:‘getline’的上一个声明在此
make[2]: *** [htpasswd.o] 错误 1
make[2]: 离开目录“/opt/FriendlyARM/mini6410/apache_1.3.39_x86/src/support”
make[1]: *** [build-support] 错误 1
make[1]: 离开目录“/opt/FriendlyARM/mini6410/apache_1.3.39_x86”
make: *** [build] 错误 2

同样的改htdigest.c 和logresolve.c

4.进入apache_1.3.39_arm
运行:
export CC="arm-linux-gcc"
./configure --prefix=/apachebin/ --without-execstrip --enable-module=so
make
然后运行make 命令,这时编译会在apache_1.3.39/src/main/gen_test_char处失败,因为arm版本该程序无法在本地机器运行,需要把前面编译的x86版本的apache_1.3.39/src/main/gen_test_char拷贝到这里,然后修改main下的Makefile,注释掉关于生成gen_test_char的命令。同样的把x86编译出来的gen_uri_delims考到main下,注释掉关于生成gen_uri_delims的命令。

继续make 出现 getline’类型冲突,解决方法和x86编译一样。
make install
5 将/apachebin文件夹拷至开发板
    接下来还必须在rootfs上建立nobody用户和nogroup组,因为apache拒绝使用root用户运行。具体来说就是在ARM Linux根文件系统上/etc/passwd和/etc/group两个文件加入内容可以如下:
/etc/passwd
root::0:0:root:/:/bin/ash
nobody::65534:65533:nobody:/:/bin/ash

/etc/group
nobody::65533:
nogroup::65534:nobody
root::0:
users::100:

6 进入apachebin/bin文件夹,执行./httpd
7 测试主机 http://192.168.2.230:80    看是否能打开网页,会提示安装成功!



Logo

更多推荐