Details on this package are located in Section 10.9.5, “Contents of Glibc.”
The Glibc package contains the main C library. This library provides the basic routines for allocating memory, searching directories, opening and closing files, reading and writing files, string handling, pattern matching, arithmetic, and so on.
The Glibc build system is self-contained and will install perfectly, even though the compiler specs file and linker are still pointing at /tools. The specs and linker cannot be adjusted before the Glibc install because the Glibc Autoconf tests would give false results and defeat the goal of achieving a clean build.
MIPS is no longer supported in the main Glibc tree, so we have to extract the glibc-ports-2.4 package into our glibc-2.4 directory. Then we move ports to the location expected by our build and patches:
tar -jxvf ../glibc-ports-2.4.tar.bz2 mv -v glibc-ports-2.4 ports
The following patch fixes link issues when building Glibc on MIPS:
patch -Np1 -i ../glibc-2.4-mips_fixes-3.patch
The following patch fixes an issue that can cause localdef to segfault:
patch -Np1 -i ../glibc-2.4-localedef_segfault-1.patch
The following patch fixes an issue with iconv:
patch -Np1 -i ../glibc-2.4-iconv_fix-1.patch
The following sed fixes a build issue with Glibc. This will prevent nscd from trying to link to libraries that don't exist:
cp -v nscd/Makefile{,.orig} sed -e "/nscd_stat.o: sysincludes = # nothing/d" nscd/Makefile.orig > \ nscd/Makefile
The Glibc documentation recommends building Glibc outside of the source directory in a dedicated build directory:
mkdir -v ../glibc-build cd ../glibc-build
Tell Glibc to install its 32-bit libraries into /lib32:
echo "slibdir=/lib32" >> configparms
Prepare Glibc for compilation:
CC="gcc ${BUILDN32}" CXX="g++ ${BUILDN32}" \ ../glibc-2.4/configure --prefix=/usr \ --disable-profile --enable-add-ons --enable-kernel=2.6.0 \ --libexecdir=/usr/lib32/glibc --libdir=/usr/lib32
The meaning of the new configure option:
This changes the location of the pt_chown program from its default of /usr/libexec to /usr/lib32/glibc.
Compile the package:
make
The test suite for Glibc is considered critical. Do not skip it under any circumstance.
Test the results:
make -k check >glibc-check-log 2>&1 ; grep Error glibc-check-log
The Glibc test suite is highly dependent on certain functions of the host system, in particular the kernel. The posix/annexc test normally fails and you should see Error 1 (ignored) in the output. Apart from this, the Glibc test suite is always expected to pass. However, in certain circumstances, some failures are unavoidable. If a test fails because of a missing program (or missing symbolic link), or a segfault, you will see an error code greater than 127 and the details will be in the log. More commonly, tests will fail with Error 2 - for these, the contents of the corresponding .out file, e.g. posix/annexc.out may be informative. Here is a list of the most common issues:
The math tests sometimes fail. Certain optimization settings are known to be a factor here.
If you have mounted the CLFS partition with the noatime option, the atime test will fail. As mentioned in Section 2.4, “Mounting the New Partition”, do not use the noatime option while building CLFS.
When running on older and slower hardware, some tests can fail because of test timeouts being exceeded.
Install the package:
make install
Details on this package are located in Section 10.9.5, “Contents of Glibc.”