这里也进入菜谱的第六章了,仍然是枯燥的解压、编译、安装、删除过程。
www.linuxfromscratch.org/lfs/view/11…
在每次安装之后别忘了删除解压的文件夹,我有些地方没写。
M4
lfs:/mnt/lfs/sources$ tar -xf m4-1.4.19.tar.xz
lfs:/mnt/lfs/sources$ cd m4-1.4.19
make
make DESTDIR=$LFS install
lfs:/mnt/lfs/sources$ rm -rf m4-1.4.19
这个地方有个坑,需要检查前面在gcc个glibc两个步骤中,limits.h文件有没有准备好
`dirname $($LFS_TGT-gcc -print-libgcc-file-name)`/install-tools/include
/mnt/lfs/tools/lib/gcc/x86_64-lfs-linux-gnu/11.2.0/install-tools/include
[root@ecs-341537 include]# ll
总用量 4
-rw-r--r-- 1 lfs lfs 0 7月 23 21:15 limits.h
-rw-r--r-- 1 lfs lfs 750 7月 23 19:41 README
Ncurses
lfs:/mnt/lfs/sources$ tar -xf ncurses-6.3.tar.gz
lfs:/mnt/lfs/sources$ cd ncurses-6.3
lfs:/mnt/lfs/sources/ncurses-6.3$ sed -i s/mawk// configure
mkdir build
pushd build
../configure
make -C include
make -C progs tic
popd
./configure --prefix=/usr \
--host=$LFS_TGT \
--build=$(./config.guess) \
--mandir=/usr/share/man \
--with-manpage-format=normal \
--with-shared \
--without-debug \
--without-ada \
--without-normal \
--disable-stripping \
--enable-widec
make
make DESTDIR=$LFS TIC_PATH=$(pwd)/build/progs/tic install
echo "INPUT(-lncursesw)" > $LFS/usr/lib/libncurses.so
bash
lfs:/mnt/lfs/sources$ tar -xf bash-5.1.16.tar.gz
lfs:/mnt/lfs/sources$ cd bash-5.1.16
./configure --prefix=/usr \
--build=$(support/config.guess) \
--host=$LFS_TGT \
--without-bash-malloc
make
make DESTDIR=$LFS install
ln -sv bash $LFS/bin/sh
lfs:/mnt/lfs/sources/bash-5.1.16$ cd ..
lfs:/mnt/lfs/sources$ rm -rf bash-5.1.16
Coreutils
lfs:/mnt/lfs/sources$ tar -xf coreutils-9.0.tar.xz
lfs:/mnt/lfs/sources$ cd coreutils-9.0
coreutils-9.0/ coreutils-9.0-i18n-1.patch
coreutils-9.0-chmod_fix-1.patch coreutils-9.0.tar.xz
lfs:/mnt/lfs/sources$ cd coreutils-9.0/
./configure --prefix=/usr \
--host=$LFS_TGT \
--build=$(build-aux/config.guess) \
--enable-install-program=hostname \
--enable-no-install-program=kill,uptime
编译
make
make DESTDIR=$LFS install
移动文件夹
mv -v $LFS/usr/bin/chroot $LFS/usr/sbin
mkdir -pv $LFS/usr/share/man/man8
mv -v $LFS/usr/share/man/man1/chroot.1 $LFS/usr/share/man/man8/chroot.8
sed -i 's/"1"/"8"/' $LFS/usr/share/man/man8/chroot.8
Diffutils
lfs:/mnt/lfs/sources$ tar -xf diffutils-3.8.tar.xz
lfs:/mnt/lfs/sources$ cd diffutils-3.8
./configure --prefix=/usr --host=$LFS_TGT
make
make DESTDIR=$LFS install
File
lfs:/mnt/lfs/sources$ tar -xf file-5.41.tar.gz
lfs:/mnt/lfs/sources$ cd fi
file-5.41/ file-5.41.tar.gz findutils-4.9.0.tar.xz
lfs:/mnt/lfs/sources$ cd file-5.41
这个地方有个巨坑 需要给build和build/src的 Makefile 文件里的CFLAGS 添加-std=c99 ,不然执行make会报错
mkdir build
pushd build
../configure --disable-bzlib \
--disable-libseccomp \
--disable-xzlib \
--disable-zlib
make
popd
./configure --prefix=/usr --host=$LFS_TGT --build=$(./config.guess)
make FILE_COMPILE=$(pwd)/build/src/file
make DESTDIR=$LFS install
Findutils
lfs:/mnt/lfs/sources$ tar -xf findutils-4.9.0.tar.xz
lfs:/mnt/lfs/sources$ cd findutils-4.9.0
./configure --prefix=/usr \
--localstatedir=/var/lib/locate \
--host=$LFS_TGT \
--build=$(build-aux/config.guess)
make
make DESTDIR=$LFS install
Gawk
lfs:/mnt/lfs/sources$ tar -xf gawk-5.1.1.tar.xz
lfs:/mnt/lfs/sources$ cd gawk-5.1.1
sed -i 's/extras//' Makefile.in
./configure --prefix=/usr \
--host=$LFS_TGT \
--build=$(./config.guess)
make
make DESTDIR=$LFS install
Grep
lfs:/mnt/lfs/sources$ tar -xf grep-3.7.tar.xz
lfs:/mnt/lfs/sources$ cd grep-3.7
./configure --prefix=/usr \
--host=$LFS_TGT
make
make DESTDIR=$LFS install
Gzip
lfs:/mnt/lfs/sources$ tar -xf gzip-1.11.tar.xz
lfs:/mnt/lfs/sources$ cd gzip-1.11
./configure --prefix=/usr --host=$LFS_TGT
make
make DESTDIR=$LFS install
Make
lfs:/mnt/lfs/sources$ tar -xf make-4.3.tar.gz
lfs:/mnt/lfs/sources$ cd make-4.3
./configure --prefix=/usr \
--without-guile \
--host=$LFS_TGT \
--build=$(build-aux/config.guess)
make
make DESTDIR=$LFS install
Patch
lfs:/mnt/lfs/sources$ tar -xf patch-2.7.6.tar.xz
lfs:/mnt/lfs/sources$ cd patch-2.7.6
./configure --prefix=/usr \
--host=$LFS_TGT \
--build=$(build-aux/config.guess)
make
make DESTDIR=$LFS install
Sed
lfs:/mnt/lfs/sources$ tar -xf sed-4.8.tar.xz
lfs:/mnt/lfs/sources$ cd sed-4.8
./configure --prefix=/usr \
--host=$LFS_TGT
make
make DESTDIR=$LFS install
Tar
lfs:/mnt/lfs/sources$ tar -xf tar-1.34.tar.xz
lfs:/mnt/lfs/sources$ cd tar-1.34
./configure --prefix=/usr \
--host=$LFS_TGT \
--build=$(build-aux/config.guess)
make
make DESTDIR=$LFS install
Xz
lfs:/mnt/lfs/sources$ tar -xf xz-5.2.5.tar.xz
lfs:/mnt/lfs/sources$ cd xz-5.2.5
./configure --prefix=/usr \
--host=$LFS_TGT \
--build=$(build-aux/config.guess) \
--disable-static \
--docdir=/usr/share/doc/xz-5.2.5
make
make DESTDIR=$LFS install
第二遍binutils
lfs:/mnt/lfs/sources$ tar -xf binutils-2.38.tar.xz
lfs:/mnt/lfs/sources$ cd binutils-2.38/
mkdir -v build
cd build
../configure \
--prefix=/usr \
--build=$(../config.guess) \
--host=$LFS_TGT \
--disable-nls \
--enable-shared \
--disable-werror \
--enable-64-bit-bfd
make
make DESTDIR=$LFS install
第二遍GCC
lfs:/mnt/lfs/sources$ tar -xf gcc-11.2.0.tar.xz
lfs:/mnt/lfs/sources$ cd gcc-11.2.0
tar -xf ../mpfr-4.1.0.tar.xz
mv -v mpfr-4.1.0 mpfr
tar -xf ../gmp-6.2.1.tar.xz
mv -v gmp-6.2.1 gmp
tar -xf ../mpc-1.2.1.tar.gz
mv -v mpc-1.2.1 mpc
case $(uname -m) in
x86_64)
sed -e '/m64=/s/lib64/lib/' -i.orig gcc/config/i386/t-linux64
;;
esac
mkdir -v build
cd build
mkdir -pv $LFS_TGT/libgcc
ln -s ../../../libgcc/gthr-posix.h $LFS_TGT/libgcc/gthr-default.h
build 文件夹下
../configure \
--build=$(../config.guess) \
--host=$LFS_TGT \
--prefix=/usr \
CC_FOR_TARGET=$LFS_TGT-gcc \
--with-build-sysroot=$LFS \
--enable-initfini-array \
--disable-nls \
--disable-multilib \
--disable-decimal-float \
--disable-libatomic \
--disable-libgomp \
--disable-libquadmath \
--disable-libssp \
--disable-libvtv \
--disable-libstdcxx \
--enable-languages=c,c++
make
make DESTDIR=$LFS install
ln -sv gcc $LFS/usr/bin/cc