Estimated build time: 0.94 SBU Estimated required disk space: 40 MB |
The programs from a statically linked Fileutils package may cause segmentation faults on certain systems, if your distribution has Glibc-2.2.3 installed. It seems to happen mostly on machines powered by an AMD CPU, but there is a case or two where an Intel system is affected as well. If your system falls in this category, apply the patch.
Note that in some cases using this patch will result in not being able to compile this package at all, even when your system has an AMD CPU and has Glibc-2.2.3 (or higher) installed. If that's the case, you'll need to remove the fileutils-4.1 directory and unpack it again from the tarball before continuing. We believe this may be the case when your distribution has altered Glibc-2.2.3 somehow, but details are unavailable at this time.
To fix this package to compile properly on AMD/Glibc-2.2.3 machines, run the following command. Do not attempt this fix if you don't have Glibc-2.2.3 installed. It will more than likely result in all kinds of compile time problems.
patch -Np1 -i ../fileutils-4.1.patch |
Install Fileutils by running the following commands:
LDFLAGS=-static \ ./configure --disable-nls --prefix=$LFS/static && make && make install |
Once you have installed Fileutils, you can test whether the segmentation fault problem has been avoided by running $LFS/static/bin/ls. If this works, then you are OK. If not, then you need to re-do the installation with the patch if you didn't use it, or without the patch if you did use it.
patch -Np1 -i ../fileutils-4.1.patch: This is used to fix a problem with building fileutils statically on glibc 2.2.3 systems. If this isn't done, then there is the possibility of all of the fileutils programs causing segmentation faults once chroot is entered in Chapter 6.
Last checked against version 4.1.
chgrp, chmod, chown, cp, dd, df, dir, dircolors, du, install, ln, ls, mkdir, mkfifo, mknod, mv, rm, rmdir, shred, sync, touch and vdir
chgrp changes the group ownership of each given file to the named group, which can be either a group name or a numeric group ID.
chmod changes the permissions of each given file according to mode, which can be either a symbolic representation of changes to make or an octal number representing the bit pattern for the new permissions.
chown changes the user and/or group ownership of each given file.
cp copies files from one place to another.
dd copies a file (from the standard input to the standard output, by default) with a user-selectable blocksize, while optionally performing conversions on it.
df displays the amount of disk space available on the filesystem containing each file name argument. If no file name is given, the space available on all currently mounted filesystems is shown.
dir and vdir are versions of ls with different default output formats. These programs list each given file or directory name. Directory contents are sorted alphabetically. For ls, files are, by default, listed in columns sorted vertically if the standard output is a terminal; otherwise they are listed one per line. For dir, files are, by default, listed in columns sorted vertically. For vdir, files are, by default, listed in long format.
dircolors outputs commands to set the LS_COLOR environment variable. The LS_COLOR variable is use to change the default color scheme used by ls and related utilities.
du displays the amount of disk space used by each file or directory listed on the command-line and by each of their subdirectories.
install copies files and sets their permission modes and, if possible, their owner and group.
ln makes hard or soft (symbolic) links between files.
mkdir creates directories with a given name.
mkfifo creates a FIFO with each given name.
mknod creates a FIFO, character special file or block special file with the given file name.
mv moves files from one directory to another or renames files, depending on the arguments given to mv.
rm removes files or directories.
rmdir removes directories, if they are empty.
shred deletes a file securely, overwriting it first so that its contents can't be recovered.
sync forces changed blocks to disk and updates the super block.
touch changes the access and modification times of each given file to the current time. Files that do not exist are created empty.
Last checked against version 4.1.
Bash: sh
Binutils: ar, as, ld, ranlib
Diffutils: cmp
Fileutils: chmod, cp, install, ln, ls, mkdir, mv, rm, rmdir
Gettext: msgfmt, xgettext
Gcc: cc, cc1, collect2, cpp0, gcc
Grep: egrep, fgrep, grep
Make: make
Perl: perl
Sed: sed
Sh-utils: basename, echo, expr, hostname, sleep, uname
Texinfo: install-info
Textutils: cat, tr