apache arm 交叉编译_Apache 2移植到Arm开发板的过程整理——如何交叉编译Apache 2

本文详细介绍了如何在 PC Linux 上交叉编译 Apache 2.4.3 以适配 Arm 开发板。首先,需要安装 pcre、apr 和 apr-util,过程中涉及多个配置选项的设置,如 ac_cv_file__dev_zero=yes、ac_cv_func_setpgrp_void=yes 等。在编译 apr 时,需对 configure 文件进行修改以解决 apr_ssize_t 和 apr_size_t 的格式问题。接着,配置并安装 httpd,注意添加 ap_cv_void_ptr_lt_long=no 和 --with-mpm=prefork 选项。最后,解决编译后的依赖库问题,将生成的库文件复制到开发板的相应目录,并调整配置文件以启动 Apache 服务器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

话说要在arm开发板的linux系统中运行apache服务器,需要在pc linux系统中交叉编译Apache源码,在网上参考了很多资料都是1.3版本的,最后终于找到apache 2移植到arm开发板的方法,现整理如下文。由于开发板的不同,可能这里出现的问题大家不会都遇到,但相信多数问题都已覆盖。

一、安装pcre

tar -xvzf pcre-8.31.tar.gz

cd pcre-8.31

./configure --prefix=$ARMROOTFS/usr/pcre --host=arm-linux CC=$TOOLCHAIN/arm-linux-gcc

make

make install

二、安装apr

这里特别提醒,先看一下后面的几点一些要注意的地方,特别是第⑤点

tar -xvzf apr-1.4.6.tar.gz

cd apr-1.4.6

./configure --prefix=$ARMROOTFS/usr/apr --host=arm-linux CC=$TOOLCHAIN/arm-linux-gcc  ac_cv_file__dev_zero=yes ac_cv_func_setpgrp_void=yes apr_cv_tcp_nodelay_with_cork=yes --cache=arm-linux.cache

这里简要说明一下如果不添加某些选项会出现的错误提示及一些需要特别注意的地方(这里按照我所记录的错误出现的顺序说明,而不是按上面选项的顺序):

①如果不添加ac_cv_file__dev_zero=yes(注意file和dev之间是两个下划线),则会出现错误:

check for /dev/zero... configure:error:cannot check for file existence when cross compile

②如果不添加ac_cv_func_setpgrp_void=yes,则会出现错误:

checking whether setpgrp takes no argument... configure: error: cannot check setpgrp when cross compiling

③选项--cache=arm-linux.cache中,arm-linux.cache为自己建立编写的文件(在编译过程中内容会被修改),在建立时需要自己写入如下内容(这个选项可能有些开发板不需要):

apr_cv_process_shared_works=yes

apr_cv_mutex_robust_shared=yes

如果不写入第一项,则会出现错误:

checking for working PROCESS_SHARED locks... configure:error: in `.../apr-1.4.6':

configure:error: cannot run test program while cross compiling

See `config.log' for more details

如果不写入第二项,则会出现:

checking for robust cross-process mutex support... configure: error: in `.../apr-1.4.6':

configure: error: cannot run test program while cross compiling

See `config.log' for more details

这些错误产生的原因在于这里在configure运行配置的过程中要运行几个测试程序来检验一些配置(个人理解),但在此处指定了编译时采用的编译器是交叉编译链,这几个测试程序都是经过交叉编译链编译产生的,而在宿主机系统上无法运行这些程序,因此只好自己手动指定这些检测程序最后运行的结果。

在以后为开发板配置软件包时遇到这种错误:configure:error:cannot run test program while cross compiling,应该都可以通过这种方法解决。

那么如果查找出这些表示结果的变量呢?只要在configure文件中搜寻这些错误的关键字即可,如这里的第一个项,我们可以搜寻:working PROCESS_SHARED locks,然后在configure文件中可以锁定到如下代码段:

C++代码...

{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working PROCESS_SHARED locks">&5

$as_echo_n "checking for working PROCESS_SHARED locks... ">&6; }

if${apr_cv_process_shared_works+:}false; then :

$as_echo_n "(cached) ">&6

else

...

这里可以看出变量apr_cv_process_shared_works便是与这个程序运行结果关联的变量。

④如果不添加ac_cv_sizeof_struct_iovec=8选项,则会在使用make指令时出现错误:

./include/apr_want.h:95: error: redefinition of 'struct iovec'

make[1]: *** [passwd/apr_getpass.lo] 错误 1

⑤在添加了ac_cv_sizeof_stru

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值