Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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>
like image 234
Amit Dube Avatar asked Jan 29 '19 02:01

Amit Dube


3 Answers

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.

like image 34
cnst Avatar answered Nov 19 '22 19:11

cnst


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

like image 195
Amit Dube Avatar answered Nov 19 '22 18:11

Amit Dube


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.

like image 2
cyqsimon Avatar answered Nov 19 '22 17:11

cyqsimon