Install M4 by running the following commands:
./configure --prefix=/usr &&
make &&
make install
If the base system is running a 2.0 kernel and the Glibc version is 2.1 then a user will most likely get problems executing M4 in the chroot'ed environment due to incompatibilities between the M4 program, Glibc-2.1 and the running 2.0 kernel. If he has problems executing the m4 program in the chroot'ed environment (for example when he installs the autoconf and automake packages) he'll have to exit the chroot'ed environment and compile M4 statically. This way the binary is linked against Glibc 2.0 (if he runs kernel 2.0, Glibc version is 2.0 as well on a decent system. Kernel 2.0 and Glibc-2.1 don't mix very well) and won't give any problems.
To create a statically linked version of M4, execute the following commands:
logout
cd $LFS/usr/src/m4-1.4
./configure --prefix=/usr
make LDFLAGS=-static
make prefix=$LFS/usr install
Now the chroot'ed environment can be re-entered and the next package an be installed. If M4 should be re-compiled dynamically, this can be done after having rebooted into the LFS system rather than chrooting into it.
chroot $LFS env -i HOME=/root bash --login
The M4 package contains the M4 processor
M4 is a macro processor. It copies input to output expanding macros as it goes. Macros are either built-in or user-defined and can take any number of arguments. Besides just doing macro expansion m4 has built-in functions for including named files, running UNIX commands, doing integer arithmetic, manipulating text in various ways, recursion, etc. M4 can be used either as a front-end to a compiler or as a macro processor in its own right.