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 <dnf|yum> 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
的来源。)
如果您无法将其全局安装到系统中,我确信 Apache 的 ./configure
脚本也必须具有支持库的自定义位置的选项。
【讨论】:
./configure中是否有指定expat库路径的参数? 试试./configure --help | fgrep expat
?!以上是关于Apache Httpd 从源构建:致命错误:expat.h:没有这样的文件或目录的主要内容,如果未能解决你的问题,请参考以下文章