From 7e4fd2e198b3811c3df3b61b9d27e2fe84e27969 Mon Sep 17 00:00:00 2001 From: Xi Ruoyao Date: Thu, 27 Mar 2025 20:56:55 +0800 Subject: [PATCH] glibc: Drop --with-headers in pass 1 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. --- chapter05/glibc.xml | 11 ----------- part3intro/toolchaintechnotes.xml | 26 +++++++++----------------- 2 files changed, 9 insertions(+), 28 deletions(-) diff --git a/chapter05/glibc.xml b/chapter05/glibc.xml index 2dccf93bf..2c7de998c 100644 --- a/chapter05/glibc.xml +++ b/chapter05/glibc.xml @@ -91,7 +91,6 @@ cd build --host=$LFS_TGT \ --build=$(../scripts/config.guess) \ --enable-kernel=&min-kernel; \ - --with-headers=$LFS/usr/include \ --disable-nscd \ libc_cv_slibdir=/usr/lib @@ -116,16 +115,6 @@ cd build - - --with-headers=$LFS/usr/include - - This tells Glibc to compile itself against the headers - recently installed to the $LFS/usr/include directory, so that - it knows exactly what features the kernel has and can optimize - itself accordingly. - - - libc_cv_slibdir=/usr/lib diff --git a/part3intro/toolchaintechnotes.xml b/part3intro/toolchaintechnotes.xml index 616af0bd9..7afb2d9ac 100644 --- a/part3intro/toolchaintechnotes.xml +++ b/part3intro/toolchaintechnotes.xml @@ -439,27 +439,19 @@ checking what linker to use... /mnt/lfs/tools/i686-lfs-linux-gnu/bin/ld - Next comes glibc. The most important - considerations for building glibc are the compiler, binary tools, and - kernel headers. The compiler and binary tools are not an issue - as --host=$LFS_TGT makes the build system to use - those tools prefixed with $LFS_TGT- as we've - discussed. The kernel headers can - be a bit more complicated. Therefore, we take no risks and use - the available configure switch to enforce the correct selection. After - the run of configure, check the contents of the - config.make file in the build directory for all important details. - These items highlight an important aspect of the glibc - package—it is very self-sufficient in terms of its build machinery, - and generally does not rely on toolchain defaults. + Next comes glibc. This is the first package that we cross-compile. + We use the --host=$LFS_TGT option to make + the build system to use those tools prefixed with + $LFS_TGT-, and the + --build=$(../scripts/config.guess) option to + enable the cross-compilation mode as we've discussed. + The DESTDIR variable is used to force installation into + the LFS file system. As mentioned above, the standard C++ library is compiled next, followed in by other programs that must be cross-compiled to break circular dependencies at build time. - The install step of all those packages uses the - DESTDIR variable to force installation - in the LFS filesystem. + The steps for those packages are similar to the steps for glibc. At the end of the native LFS compiler is installed. First binutils-pass2 is built,