【lfs11.1 从零开始】03-交叉编译临时工具

327 阅读1分钟

这里也进入菜谱的第六章了,仍然是枯燥的解压、编译、安装、删除过程。

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