I cannot see why this is ever needed. The default is "the compiler
default" which should be correct as the compiler has been configured
--with-sysroot. And the explanation for this switch is just repeating a
common misunderstanding. In fact glibc **never** attempts to figure out
what features the kernel has from the headers. Instead it depends on
the kernel-features.h files in the source tree and the --with-kernel
value to determine the kernel features that it can rely on.
- Document the autoconf behavior about "the cross-compilation mode," to
explain the necessity of --build=$(path/to/config.guess) added for
#5304.
- Mention the libtool fallout regrading cross-compilation.
- Remove the explanation for CC_FOR_TARGET, which is already removed
much earlier.
- Note the cross-toolchain cannot be used anymore after installing gcc
pass 2.
- "Stage 3" (i.e. the final LFS system) is NOT optional.
It's just wrong (at least with all recent Coreutils releases).
Note that hard links are really destroyed, but AFAIK tar does not keep
hard links correctly anyway and destroying hard links won't cause
packages fail to build at all.
The problem is not "gcc building system doesn't know cc-lfs can run on
pc", but "cc-lfs really cannot run on pc".
Let's stop anyone from thinking about "why not just tell the gcc
building system the fact".
I'm pretty sure "stage 2" libstdc++ (installed in ch6) is already fully
featured. The reason to rebuild the stage 3 libstdc++ (or entire
stage 3 gcc) is same as the reason to rebuild every packages in multiple
chapters: to "settle down" it.
Merge the content of
https://www.linuxfromscratch.org/lfs/faq.html#rebuild-ch8 into the book
as an explanation.
- Don't say "most building system", refine the dicussion for autoconf.
Other building systems may use a variant of triplet, or use a
completely different system designation.
- Explain why a triplet may contain 4 fields in detail. "Histroical
reason" is not really correct because 3-field triplet is still used
today for BSD, Fuchsia, IOS, Mac OS X (darwin), Solaris, etc.
- "machine" triplet to "system" triplet (strictly speaking, only the
first field in the triplet is for the machine).
Why we need to say "vendor can be omitted" explicitly: we mention "gcc
-dumpmachine". On some distros (like Ubuntu) the output has no vendor
field. If you think this is too nasty, please remove both.
"need to be cross compiled" alone does not make too much sense: we
compile these packages in chapter 8 anyway. The real reason forcing a
cross compilation is circular dependency: if building A needs B but
building B needs A, we'll have to cross compile at least one of A and B
or we won't be able to build either in the chroot.
Many distros have some customized things in gcc -dumpmachine. RHEL uses
x86_64-redhat-linux-gnu, and Ubuntu uses x86_64-linux-gnu ("vendor"
field omitted). So don't use "same" here, and also mention the "vendor"
field is sometimes omitted.
There are some discussion on gcc-help from someone (mis)using LFS to
build a "general" toolchain. Let's stop it before off-topic message got
into lfs-support.
- a wrong chapter in toolchain notes, and various text precisions
the option explanations of chapter 8 glibc (was labelled WIP)
git-svn-id: http://svn.linuxfromscratch.org/LFS/trunk/BOOK@11961 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689