I am trying to build Apache Server v 2.4.38 on RHEL 7.3 and I am using apr 1.6.5, apr-util 1.6.1, and pcre 8.42.
I am running following commands
./configure --with-included-apr --with-pcre=/data/abc/installed/pcre_installed --prefix=/data/abc/installed/httpd_installed
make
While running ‘make‘ I am receiving error
/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>
4
Answers
Download expat-2.2.6.tar.bz2 from https://libexpat.github.io/.
Extract expat using following command
tar xvjf expat-2.2.6.tar.bz2 -C /path-to-dir
Change to the extracted expat directory.
Build expat using following commands
./configure --prefix=/path-to-expat-installation-dir
make
make install
While building Apache Httpd from source specify --with-expat
./configure --with-included-apr --prefix=/path-to-apache-installation --with-expat=/path-to-expat-installation-dir
Do you have the
expat
library installed? (Because that’s where theexpat.h
comes from.)If you cannot install it globally to the system, I’m sure Apache’s
./configure
script must have an option to support a custom location for the library as well.For anyone else coming across this:
OP had to do this because they didn’t have
sudo
access. If you do, usually you don’t need to download the source ofexpat
manually; installing via package manager is way easier. Unless the software you are compiling requires a newer version ofexpat
than your RPM repos provide.So for the RHEL family of OSes you can just do
sudo <dnf|yum> install expat expat-devel
, then proceed with what you were compiling.Tried In Ubuntu
apt install libexpat1-dev
For RHEL, I would suggest @cyqsimon’s answer