chapter 6.16: configure: error: in `/sources/gcc-build/i686-pc-linux-gnu/libgcc':, ... C preprocessor "/lib/cpp" fails sanity check

Neal Murphy neal.p.murphy at
Wed May 26 08:25:08 PDT 2010

On Wednesday 26 May 2010 08:33:20 linux fan wrote:
> On 5/26/10, Simon Geard <delgarde at> wrote:
> > I can't really see how things can be improved (short of blinking red
> > text on *every* page), but it does seem like half the problems we deal
> > with are from people not following it. Are people not even reading that
> > entire "General Compilation Instructions" page, and skipping straight to
> > the packages?
> The important note #1 in ch 5.3 is clear.
> However, "General Compilation Instructions"  never specifies the flow
> of events expected to follow:
> 1 - make sure $LFS is set to the target directory (export LFS=/mnt/lfs)
> 2 - change directory to $LFS/sources
> 3 - unpack the package tarball
> 4 - change directory to the unpacked directory created by tar
> 5 - follow package build and install instructions
> 6 - change directory to $LFS/sources
> 7 - remove the unpacked directory created by tar
> At least I can't remember where that is.

That *is* documented. Somewhere. (I think you forgot the step to delete the 
build directory, though.) I think the steps could be clearer, perhaps written 
a little differently or presented a little differently. Perhaps each package 
should should start with a hyperlink to the first four steps, called "build 
preparation", and end with a link to the last four steps, called "build 
cleanup". Small, gentle reminders of what needs to be done before and after 

While on the subject, I think it would be useful to move each of the toolchain 
adjustings and checks to its own section. For example, the toolchain check in 
pass 2 of building gcc really should stand alone. Yes, it's well marked. But 
it is, logically, a major, important build step of its own. I've been 
rebuilding another project's build system, which was based on an early 
version of LFS. The toolchain adjustments and checks were already in their 
own steps; I expanded their functionality and added pseudo-targets in teh 
Makefile. If an adjustment fails, it backs out its changes and stops the 
build. If a check fails, the build stops. And the checks are meticulous. Even 
the main pre-build check will stop the build if just one prerequisite is not 
My build system is closer to ALFS, but I've only used LFS as my guide. LFS 
should be written so that a 'human computer' can execute the program. It's 
pretty good, but as with all human works, it can be improved.

More information about the lfs-support mailing list