Apache Httpd Build from source: fatal error: expat.h: No such file or directory

Do you have the expat library installed? (Because that's where the expat.h comes from.)

  • https://libexpat.github.io/

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 of expat manually; installing via package manager is way easier. Unless the software you are compiling requires a newer version of expat 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.


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

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

  2. make

  3. 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