Apache Httpd 从源构建:致命错误:expat.h:没有这样的文件或目录

Posted

技术标签:

【中文标题】Apache Httpd 从源构建:致命错误:expat.h:没有这样的文件或目录【英文标题】:Apache Httpd Build from source: fatal error: expat.h: No such file or directory 【发布时间】:2019-06-22 02:20:55 【问题描述】:

我正在尝试在 RHEL 7.3 上构建 Apache Server v 2.4.38,我正在使用 apr 1.6.5、apr-util 1.6.1 和 pcre 8.42。

我正在运行以下命令

./configure  --with-included-apr --with-pcre=/data/abc/installed/pcre_installed --prefix=/data/abc/installed/httpd_installed  

make

在运行 'make' 时,我收到错误消息

/bin/sh /data/abc/installed/httpd-2.4.38/srclib/apr/libtool --silent --mode=compile gcc -g -O2 -pthread   -DHAVE_CONFIG_H  -DLINUX -D_REENTRANT -D_GNU_SOURCE   -I/data/abc/installed/httpd-2.4.38/srclib/apr-util/include -I/data/abc/installed/httpd-2.4.38/srclib/apr-util/include/private  -I/data/abc/installed/httpd-2.4.38/srclib/apr/include    -o xml/apr_xml.lo -c xml/apr_xml.c && touch xml/apr_xml.lo
xml/apr_xml.c:35:19: fatal error: expat.h: No such file or directory
 #include <expat.h>

【问题讨论】:

我无法执行 'yum install expat-devel',因为它需要 sudo 访问权限。 如果您没有 root 访问权限,为什么要从源代码构建 Apache?! 我想在我的机器上启动 httpd 服务器。是否可以在没有 root 访问权限的情况下使用 rpm 包安装 Apache Httpd? 除非你有root权限,否则你不能让它监听80端口,所以你只能让它在8080这样的端口上工作(通常,1024以下的端口是保留的)。 【参考方案1】:

对于遇到此问题的其他人:

OP 必须这样做,因为他们没有 sudo 访问权限。如果这样做,通常不需要手动下载expat的源码;通过包管理器安装更容易。除非您正在编译的软件需要比您的 RPM 存储库提供的更新版本的 expat

因此,对于 RHEL 系列操作系统,您只需执行 sudo &lt;dnf|yum&gt; install expat expat-devel,然后继续您正在编译的内容。

【讨论】:

【参考方案2】:

从https://libexpat.github.io/下载expat-2.2.6.tar.bz2。

使用以下命令提取 expat

tar xvjf expat-2.2.6.tar.bz2 -C /path-to-dir

切换到解压的 expat 目录。

使用以下命令构建 expat

    ./configure --prefix=/path-to-expat-installation-dir

    制作

    进行安装

在从源代码构建 Apache Httpd 时指定 --with-expat

./configure --with-included-apr --prefix=/path-to-apache-installation --with-expat=/path-to-expat-installation-dir

【讨论】:

【参考方案3】:

您是否安装了expat 库? (因为这就是 expat.h 的来源。)

https://libexpat.github.io/

如果您无法将其全局安装到系统中,我确信 Apache 的 ./configure 脚本也必须具有支持库的自定义位置的选项。

【讨论】:

./configure中是否有指定expat库路径的参数? 试试./configure --help | fgrep expat?!

以上是关于Apache Httpd 从源构建:致命错误:expat.h:没有这样的文件或目录的主要内容,如果未能解决你的问题,请参考以下文章

Apache httpd 设置和安装

Maven:致命错误编译:无效的目标版本:1.8

突然出现Apache错误?致命错误:未捕获错误

如何在 nginx 或 apache httpd 中构建 Angular 4 应用程序?

apache重启错误分段错误:11 $HTTPD“$@”

httpd服务器之——Apache的相关配置与应用