lfs(systemv版本)学习笔记-第2页的地址:https://www.cnblogs.com/renren-study-notes/p/10199381.html

七.开始构建lfs

第六章节中构建的所有包必须进行测试。

终端的环境应该是:

1.设置变量

2.挂载你为lfs创建的所有分区
3.逐步完成6.2.2与6.2.3章节内容后

4.chroot进入lfs分区继续操作。

第6.7章节

编译安装Linux API Headers包

根据上一章节的构建要求,首先进入到$LFS/sources目录

cd /sources

因为Linux API Headers在linux包中,所以解压并进入linux包

tar -xvf linux-4.20.12.tar.xz
cd linux-4.20.12

2.参照书中说明编译安装

make mrproper

make INSTALL_HDR_PATH=dest headers_install
find dest/include \( -name .install -o -name ..install.cmd \) -delete
cp -rv dest/include/* /usr/include

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf linux-4.20.12

第6.8章节

编译安装man-pages包

1.解压并进入man-pages包目录

tar -xvf man-pages-4.16.tar.xz

cd man-pages-4.16

2.参照书中说明编译安装

make install

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf man-pages-4.16

第6.9章节

编译安装glibc包

1.解压并进入glibc包目录

tar -xvf glibc-2.29.tar.xz

cd glibc-2.29

2.参照书中说明编译安装

patch -Np1 -i ../glibc-2.29-fhs-.patch

ln -sfv /tools/lib/gcc /usr/lib

case $(uname -m) in
i?) GCC_INCDIR=/usr/lib/gcc/$(uname -m)-pc-linux-gnu/8.2./include
ln -sfv ld-linux.so. /lib/ld-lsb.so.
;;
x86_64) GCC_INCDIR=/usr/lib/gcc/x86_64-pc-linux-gnu/8.2./include
ln -sfv ../lib/ld-linux-x86-.so. /lib64
ln -sfv ../lib/ld-linux-x86-.so. /lib64/ld-lsb-x86-.so.
;;
esac rm -f /usr/include/limits.h mkdir -v build
cd build CC="gcc -isystem $GCC_INCDIR -isystem /usr/include" \
../configure --prefix=/usr \
--disable-werror \
--enable-kernel=3.2 \
--enable-stack-protector=strong \
libc_cv_slibdir=/lib
unset GCC_INCDIR make -j8 make -j8 check touch /etc/ld.so.conf sed '/test-installation/s@$(PERL)@echo not running@' -i ../Makefile make install cp -v ../nscd/nscd.conf /etc/nscd.conf
mkdir -pv /var/cache/nscd

3.配置glibc包

按照书籍安装步骤到(可以使用localedef程序安装单个语言环境)步骤

我们需要安装英文语言环境和中文语言环境

1.创建语言环境安装目录

mkdir -pv /usr/lib/locale

2.安装语言环境

localedef -i en_US -f UTF- en_US.UTF-
localedef -i zh_CN -f UTF- zh_CN.UTF-

3.创建/etc/nsswitch.conf文件

cat > /etc/nsswitch.conf << "EOF"
# Begin /etc/nsswitch.conf passwd: files
group: files
shadow: files hosts: files dns
networks: files protocols: files
services: files
ethers: files
rpc: files # End /etc/nsswitch.conf
EOF

4.安装和设置时区数据

tar -xf ../../tzdata2018e.tar.gz

ZONEINFO=/usr/share/zoneinfo
mkdir -pv $ZONEINFO/{posix,right} for tz in etcetera southamerica northamerica europe africa antarctica \
asia australasia backward pacificnew systemv; do
zic -L /dev/null -d $ZONEINFO -y "sh yearistype.sh" ${tz}
zic -L /dev/null -d $ZONEINFO/posix -y "sh yearistype.sh" ${tz}
zic -L leapseconds -d $ZONEINFO/right -y "sh yearistype.sh" ${tz}
done cp -v zone.tab zone1970.tab iso3166.tab $ZONEINFO
zic -d $ZONEINFO -p America/New_York
unset ZONEINFO

5.确定时区

tzselect
Please identify a location so that time zone rules can be set correctly.
Please select a continent, ocean, "coord", or "TZ".
) Africa
) Americas
) Antarctica
) Asia
) Atlantic Ocean
) Australia
) Europe
) Indian Ocean
) Pacific Ocean
) coord - I want to use geographical coordinates.
) TZ - I want to specify the time zone using the Posix TZ format.

6.这里我们选择4亚洲

Please select a country whose clocks agree with yours.
) Afghanistan ) Israel ) Palestine
) Armenia ) Japan ) Philippines
) Azerbaijan ) Jordan ) Qatar
) Bahrain ) Kazakhstan ) Russia
) Bangladesh ) Korea (North) ) Saudi Arabia
) Bhutan ) Korea (South) ) Singapore
) Brunei ) Kuwait ) Sri Lanka
) Cambodia ) Kyrgyzstan ) Syria
) China ) Laos ) Taiwan
) Cyprus ) Lebanon ) Tajikistan
) East Timor ) Macau ) Thailand
) Georgia ) Malaysia ) Turkmenistan
) Hong Kong ) Mongolia ) United Arab Emirates
) India ) Myanmar (Burma) ) Uzbekistan
) Indonesia ) Nepal ) Vietnam
) Iran ) Oman ) Yemen
) Iraq ) Pakistan

7.这里我们选择9中国

Please select one of the following time zone regions.
) Beijing Time
) Xinjiang Time

8.这里我们选择1北京时间

The following information has been given:

    China
Beijing Time Therefore TZ='Asia/Shanghai' will be used.
Selected time is now: Sun Dec :: CST .
Universal Time is now: Sun Dec :: UTC .
Is the above information OK?
) Yes
) No
#? yes
Please enter a number in range.

9.是否选择以上信息?这里选择1

You can make this change permanent for yourself by appending the line
TZ='Asia/Shanghai'; export TZ
to the file '.profile' in your home directory; then log out and log in again. Here is that TZ value again, this time on standard output so that you
can use the /usr/bin/tzselect command in shell scripts:
Asia/Shanghai

这句的意思是你可以将该配置文件添加到/usr/bin/tzselect使其生效(这个命令是创建一个时区环境变量,重启后会失效)

10.运行以下命令创建时区文件/etc/localtime

cp -v /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

11.配置动态加载文件

cat > /etc/ld.so.conf << "EOF"
# Begin /etc/ld.so.conf
/usr/local/lib
/opt/lib EOF cat >> /etc/ld.so.conf << "EOF"
# Add an include directory
include /etc/ld.so.conf.d/*.conf EOF
mkdir -pv /etc/ld.so.conf.d

12.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf glibc-2.29

第6.10章节

调整工具链

1.输入书中命令核对输出即可

mv -v /tools/bin/{ld,ld-old}
mv -v /tools/$(uname -m)-pc-linux-gnu/bin/{ld,ld-old}
mv -v /tools/bin/{ld-new,ld}
ln -sv /tools/bin/ld /tools/$(uname -m)-pc-linux-gnu/bin/ld gcc -dumpspecs | sed -e 's@/tools@@g' \
-e '/\*startfile_prefix_spec:/{n;s@.*@/usr/lib/ @}' \
-e '/\*cpp:/{n;s@$@ -isystem /usr/include@}' > \
`dirname $(gcc --print-libgcc-file-name)`/specs echo 'int main(){}' > dummy.c
cc dummy.c -v -Wl,--verbose &> dummy.log
readelf -l a.out | grep ': /lib' grep -o '/usr/lib.*/crt[1in].*succeeded' dummy.log grep -B1 '^ /usr/include' dummy.log grep 'SEARCH.*/usr/lib' dummy.log |sed 's|; |\n|g' grep "/lib.*/libc.so.6 " dummy.log grep found dummy.log rm -v dummy.c a.out dummy.log

第6.11章节

编译安装zlib包

1.解压并进入zlib包目录

tar -xvf zlib-1.2..tar.xz

cd zlib-1.2.

2.参照书中内容编译安装

./configure --prefix=/usr

make -j8

make -j8 check

make install

mv -v /usr/lib/libz.so.* /lib
ln -sfv ../../lib/$(readlink /usr/lib/libz.so) /usr/lib/libz.so

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf zlib-1.2.11

第6.12章节

构建安装file包

1.解压并进入file包目录

tar -xvf file-5.36.tar.gz

cd file-5.36

2.参照书中内容编译安装

./configure --prefix=/usr

make -j8

make -j8 check

make install

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf file-5.36

第6.13章节

编译安装readline包

1.解压并进入readline包目录

tar -xvf readline-8.0.tar.gz

cd readline-8.0

2.参照书中说明编译安装

sed -i '/MV.*old/d' Makefile.in
sed -i '/{OLDSUFF}/c:' support/shlib-install ./configure --prefix=/usr \
--disable-static \
--docdir=/usr/share/doc/readline-8.0 make SHLIB_LIBS="-L/tools/lib -lncursesw" make SHLIB_LIBS="-L/tools/lib -lncurses" install mv -v /usr/lib/lib{readline,history}.so.* /lib
chmod -v u+w /lib/lib{readline,history}.so.*
ln -sfv ../../lib/$(readlink /usr/lib/libreadline.so) /usr/lib/libreadline.so
ln -sfv ../../lib/$(readlink /usr/lib/libhistory.so ) /usr/lib/libhistory.so install -v -m644 doc/*.{ps,pdf,html,dvi} /usr/share/doc/readline-8.0

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf readline-8.0

第6.14章节

编译安装m4包

1.解压并进入m4包目录

tar -xvf m4-1.4..tar.xz

cd m4-1.4.

2.参照书中说明编译安装

sed -i 's/IO_ftrylockfile/IO_EOF_SEEN/' lib/*.c
echo "#define _IO_IN_BACKUP 0x100" >> lib/stdio-impl.h ./configure --prefix=/usr make -j8 make -j8 check make install

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf m4-1.4.18

第6.15章节

编译安装bc包

1.解压并进入bc包目录

tar -xvf bc-1.07..tar.gz

cd bc-1.07.

2.参照书中内容编译安装

cat > bc/fix-libmath_h << "EOF"
#! /bin/bash
sed -e '1 s/^/{"/' \
-e 's/$/",/' \
-e '2,$ s/^/"/' \
-e '$ d' \
-i libmath.h sed -e '$ s/$/0}/' \
-i libmath.h
EOF ln -sv /tools/lib/libncursesw.so. /usr/lib/libncursesw.so.
ln -sfv libncurses.so. /usr/lib/libncurses.so sed -i -e '/flex/s/as_fn_error/: ;; # &/' configure ./configure --prefix=/usr \
--with-readline \
--mandir=/usr/share/man \
--infodir=/usr/share/info make -j8 echo "quit" | ./bc/bc -l Test/checklib.b make install

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf bc-1.07.1

第6.16章节

编译安装binutils包

1.解压并进入binutils包目录

tar -xvf binutils-2.32.tar.xz

cd binutils-2.32

2.参照书中说明编译安装

expect -c "spawn ls"

mkdir -v build
cd build ../configure --prefix=/usr \
--enable-gold \
--enable-ld=default \
--enable-plugins \
--enable-shared \
--disable-werror \
--enable--bit-bfd \
--with-system-zlib make tooldir=/usr make -k check make tooldir=/usr install

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf binutils-2.32

第6.17章节

编译安装gmp包

1.解压并进入gmp包目录

tar -xvf gmp-6.1..tar.xz

cd gmp-6.1.

2.参照书中说明编译安装

./configure --prefix=/usr    \
--enable-cxx \
--disable-static \
--docdir=/usr/share/doc/gmp-6.1. make -j8
make html make check >& | tee gmp-check-log awk '/# PASS:/{total+=$3} ; END{print total}' gmp-check-log make install
make install-html

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf gmp-6.1.2

第6.18章节

编译安装mpfr包

1.解压并进入mpfr包目录

tar -xvf mpfr-4.0.2.tar.xz

cd mpfr-4.0.2

2.参照书中说明编译安装

./configure --prefix=/usr        \
--disable-static \
--enable-thread-safe \
--docdir=/usr/share/doc/mpfr-4.0.2 make -j8
make -j8 html make -j8 check make install
make install-html

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf mpfr-4.0.2

第6.19章节

安装编译mpc包

1.解压并进入mpc包目录

tar -xvf mpc-1.1..tar.gz

cd mpc-1.1. 

2.参照书中内容编译安装

./configure --prefix=/usr    \
--disable-static \
--docdir=/usr/share/doc/mpc-1.1. make -j8
make -j8 html make -j8 check make install
make install-html

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf mpc-1.1.0

第6.20章节

编译安装shadow包

1.解压并进入shadow包目录

tar -xvf shadow-4.6.tar.xz

cd shadow-4.6

2.参照书中说明编译安装

sed -i 's/groups$(EXEEXT) //' src/Makefile.in
find man -name Makefile.in -exec sed -i 's/groups\.1 / /' {} \;
find man -name Makefile.in -exec sed -i 's/getspnam\.3 / /' {} \;
find man -name Makefile.in -exec sed -i 's/passwd\.5 / /' {} \; sed -i -e 's@#ENCRYPT_METHOD DES@ENCRYPT_METHOD SHA512@' \
-e 's@/var/spool/mail@/var/mail@' etc/login.defs sed -i 's/1000/999/' etc/useradd ./configure --sysconfdir=/etc --with-group-name-max-length= make -j8 make install mv -v /usr/bin/passwd /bin

3.配置shadow包

pwconv

grpconv

sed -i 's/yes/no/' /etc/default/useradd

4.为root用户设置密码

passwd root

5.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf shadow-4.6

第6.21章节

编译安装gcc包

1.解压并进入gcc包目录

tar -xvf gcc-8.2..tar.xz

cd gcc-8.2.

2.参照书中的说明进行编译安装

case $(uname -m) in
x86_64)
sed -e '/m64=/s/lib64/lib/' \
-i.orig gcc/config/i386/t-linux64
;;
esac rm -f /usr/lib/gcc mkdir -v build
cd build SED=sed \
../configure --prefix=/usr \
--enable-languages=c,c++ \
--disable-multilib \
--disable-bootstrap \
--disable-libmpx \
--with-system-zlib make -j8 ulimit -s rm ../gcc/testsuite/g++.dg/pr83239.C chown -Rv nobody .
su nobody -s /bin/bash -c "PATH=$PATH make -k check" ../contrib/test_summary make install ln -sv ../usr/bin/cpp /lib ln -sv gcc /usr/bin/cc install -v -dm755 /usr/lib/bfd-plugins
ln -sfv ../../libexec/gcc/$(gcc -dumpmachine)/8.2./liblto_plugin.so \
/usr/lib/bfd-plugins/

3.检查工具链并核对输出结果

echo 'int main(){}' > dummy.c
cc dummy.c -v -Wl,--verbose &> dummy.log
readelf -l a.out | grep ': /lib' grep -o '/usr/lib.*/crt[1in].*succeeded' dummy.log grep -B4 '^ /usr/include' dummy.log grep 'SEARCH.*/usr/lib' dummy.log |sed 's|; |\n|g' grep "/lib.*/libc.so.6 " dummy.log grep found dummy.log rm -v dummy.c a.out dummy.log mkdir -pv /usr/share/gdb/auto-load/usr/lib
mv -v /usr/lib/*gdb.py /usr/share/gdb/auto-load/usr/lib

5.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf gcc-8.2.0

第6.22章节

编译安装 bzip2包

1.解压并进入bzip2包目录

tar -xvf bzip2-1.0..tar.gz

cd bzip2-1.0.

2.参照书中说明编译安装

patch -Np1 -i ../bzip2-1.0.-install_docs-.patch

sed -i 's@\(ln -s -f \)$(PREFIX)/bin/@\1@' Makefile

sed -i "s@(PREFIX)/man@(PREFIX)/share/man@g" Makefile

make -f Makefile-libbz2_so
make clean make -j8 make PREFIX=/usr install cp -v bzip2-shared /bin/bzip2
cp -av libbz2.so* /lib
ln -sv ../../lib/libbz2.so.1.0 /usr/lib/libbz2.so
rm -v /usr/bin/{bunzip2,bzcat,bzip2}
ln -sv bzip2 /bin/bunzip2
ln -sv bzip2 /bin/bzcat

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf bzip2-1.0.6

第6.23章节

编译安装pkg-config包

1.解压并进入pkg-config包

tar -xvf pkg-config-0.29..tar.gz

cd pkg-config-0.29.

2.参照书中说明编译安装

./configure --prefix=/usr              \
--with-internal-glib \
--disable-host-tool \
--docdir=/usr/share/doc/pkg-config-0.29. make -j8 make -j8 check make install

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf pkg-config-0.29.2

第6.24章节

编译安装ncurses包

1.解压并进入ncurses包目录

tar -xvf ncurses-6.1.tar.gz

cd ncurses-6.1

2.参照书中说明编译安装

sed -i '/LIBTOOL_INSTALL/d' c++/Makefile.in

./configure --prefix=/usr           \
--mandir=/usr/share/man \
--with-shared \
--without-debug \
--without-normal \
--enable-pc-files \
--enable-widec make -j8 make install mv -v /usr/lib/libncursesw.so.* /lib ln -sfv ../../lib/$(readlink /usr/lib/libncursesw.so) /usr/lib/libncursesw.so for lib in ncurses form panel menu ; do
rm -vf /usr/lib/lib${lib}.so
echo "INPUT(-l${lib}w)" > /usr/lib/lib${lib}.so
ln -sfv ${lib}w.pc /usr/lib/pkgconfig/${lib}.pc
done rm -vf /usr/lib/libcursesw.so
echo "INPUT(-lncursesw)" > /usr/lib/libcursesw.so
ln -sfv libncurses.so /usr/lib/libcurses.so mkdir -v /usr/share/doc/ncurses-6.1
cp -v -R doc/* /usr/share/doc/ncurses-6.1 make distclean
./configure --prefix=/usr \
--with-shared \
--without-normal \
--without-debug \
--without-cxx-binding \
--with-abi-version=5
make sources libs
cp -av lib/lib*.so.5* /usr/lib

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf ncurses-6.1

第6.25章节

编译安装attr包

1.解压并进入attr包目录

tar -xvf attr-2.4..tar.gz

cd attr-2.4.

2.参照书中说明进行编译安装

./configure --prefix=/usr     \
--bindir=/bin \
--disable-static \
--sysconfdir=/etc \
--docdir=/usr/share/doc/attr-2.4. make -j8 make -j8 check make install mv -v /usr/lib/libattr.so.* /lib
ln -sfv ../../lib/$(readlink /usr/lib/libattr.so) /usr/lib/libattr.so

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf attr-2.4.48

第6.26章节

编译安装acl包

1.解压并进入acl包目录

tar -xvf acl-2.2..tar.gz

cd acl-2.2.

2.参照书中说明编译安装

./configure --prefix=/usr         \
--bindir=/bin \
--disable-static \
--libexecdir=/usr/lib \
--docdir=/usr/share/doc/acl-2.2. make -j8 make install mv -v /usr/lib/libacl.so.* /lib
ln -sfv ../../lib/$(readlink /usr/lib/libacl.so) /usr/lib/libacl.so

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf acl-2.2.53

第6.27章节

编译安装libcap包

1.解压并进入libcap包目录

tar -xvf libcap-2.26.tar.xz

cd libcap-2.26

2.参照书中说明编译安装

sed -i '/install.*STALIBNAME/d' libcap/Makefile

make -j8

make RAISE_SETFCAP=no lib=lib prefix=/usr install
chmod -v /usr/lib/libcap.so.2.26 mv -v /usr/lib/libcap.so.* /lib
ln -sfv ../../lib/$(readlink /usr/lib/libcap.so) /usr/lib/libcap.so

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf libcap-2.26

第6.28章节

编译安装sed包

1.解压并进入sed包

tar -xvf sed-4.7.tar.xz

cd sed-4.7

2.参照书中内容编译安装

sed -i 's/usr/tools/'                 build-aux/help2man
sed -i 's/testsuite.panic-tests.sh//' Makefile.in ./configure --prefix=/usr --bindir=/bin make -j8
make -j8 html make -j8 check make install
install -d -m755 /usr/share/doc/sed-4.7
install -m644 doc/sed.html /usr/share/doc/sed-4.7

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf sed-4.7

第6.29章节

编译安装psmisc包

1.解压并进入psmisc包目录

tar -xvf psmisc-23.2.tar.xz

cd psmisc-23.2

2.参照书中说明编译安装

./configure --prefix=/usr

make -j8

make install 

mv -v /usr/bin/fuser   /bin
mv -v /usr/bin/killall /bin

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf psmisc-23.2

第6.30章节

编译安装iana-etc包

1.解压并进入iana-etc包

tar -xvf iana-etc-2.30.tar.bz2

cd iana-etc-2.30

2.参照书中说明编译安装

make -j8

make install

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf iana-etc-2.30

第6.31章节

编译安装bison包

1.解压并进入bison包目录

tar -xvf bison-3.3.2.tar.xz

cd bison-3.3.2

2.参照书中说明编译安装

./configure --prefix=/usr --docdir=/usr/share/doc/bison-3.3.2

make -j8

make install

如果需要测试,在下一节中安装flex后,可以重建bison,并且可以通过make check来运行bison检查。(不推荐重建)

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf bison-3.3.2

第6.32章节

编译安装flex包

1.解压并进入flex包目录

tar -xvf flex-2.6..tar.gz

cd flex-2.6.

2.参照书中说明编译安装

sed -i "/math.h/a #include <malloc.h>" src/flexdef.h

HELP2MAN=/tools/bin/true \
./configure --prefix=/usr --docdir=/usr/share/doc/flex-2.6. make -j8 make -j8 check make install ln -sv flex /usr/bin/lex

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf flex-2.6.4

第6.33章节

编译安装grep包

1.解压并进入grep包目录

tar -xvf grep-3.3.tar.xz

cd grep-3.3

2.参照书中说明编译安装

./configure --prefix=/usr --bindir=/bin

make -j8

make -kj8 check

make install

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf grep-3.3

第6.34章节

编译安装bash包

1.解压并进入bash包目录

tar -xvf bash-5.0.tar.gz

cd bash-5.0

2.参照书中说明编译安装

./configure --prefix=/usr                       \
--docdir=/usr/share/doc/bash-5.0 \
--without-bash-malloc \
--with-installed-readline make -j8 chown -Rv nobody . su nobody -s /bin/bash -c "PATH=$PATH make tests" make install
mv -vf /usr/bin/bash /bin exec /bin/bash --login +h

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf bash-5.0

第6.35章节

编译安装libtool

1.解压并进入libtool包目录

tar -xvf libtool-2.4..tar.xz

cd libtool-2.4.

2.参照书中内容编译安装

./configure --prefix=/usr

make -j8

make -j8 check

make install

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf libtool-2.4.6

第6.36章节

编译安装gdbm包

1.解压并进入gdbm包目录

tar -xvf gdbm-1.18.1.tar.gz

cd gdbm-1.18.1

2.参照书中说明编译安装

./configure --prefix=/usr \
--disable-static \
--enable-libgdbm-compat make -j8 make -j8 check make install

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf gdbm-1.18.1

第6.37章节

编译安装gperf包

1.解压并进入gperf包目录

tar -xvf gperf-3.1.tar.gz

cd gperf-3.1

2.参照书中说明编译安装

./configure --prefix=/usr --docdir=/usr/share/doc/gperf-3.1

make -j8

make -j1 check

make install

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf gperf-3.1

第6.38章节

编译安装expat包

1.解压并进入expat包目录

tar -xvf expat-2.2..tar.bz2

cd expat-2.2.

2.参照书中说明编译安装

sed -i 's|usr/bin/env |bin/|' run.sh.in

./configure --prefix=/usr    \
--disable-static \
--docdir=/usr/share/doc/expat-2.2. make -j8 make -j8 check make install install -v -m644 doc/*.{html,png,css} /usr/share/doc/expat-2.2.6

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf expat-2.2.6

第6.39章节

编译安装inetutils包

1.解压并进入inetutils包目录

tar -xvf inetutils-1.9..tar.xz

cd inetutils-1.9.

2.参照书中说明编译安装

./configure --prefix=/usr        \
--localstatedir=/var \
--disable-logger \
--disable-whois \
--disable-rcp \
--disable-rexec \
--disable-rlogin \
--disable-rsh \
--disable-servers make -j8 make -j8 check make install mv -v /usr/bin/{hostname,ping,ping6,traceroute} /bin
mv -v /usr/bin/ifconfig /sbin

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf inetutils-1.9.4

第6.40章节

编译安装perl包

1.解压并进入perl包目录

tar -xvf perl-5.28.1.tar.xz

cd perl-5.28.1

2.参照书中说明编译安装

echo "127.0.0.1 localhost $(hostname)" > /etc/hosts

export BUILD_ZLIB=False
export BUILD_BZIP2= sh Configure -des -Dprefix=/usr \
-Dvendorprefix=/usr \
-Dman1dir=/usr/share/man/man1 \
-Dman3dir=/usr/share/man/man3 \
-Dpager="/usr/bin/less -isR" \
-Duseshrplib \
-Dusethreads make -j8 make -kj8 test make install unset BUILD_ZLIB BUILD_BZIP2

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf perl-5.28.1

第6.41章节

编译安装XML-Parser包

1.解压并进入XML-Parser包目录

tar -xvf XML-Parser-2.44.tar.gz

cd XML-Parser-2.44

2.参照书中说明编译安装

perl Makefile.PL

make -j8

make -j8 test

make install

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf XML-Parser-2.44

第6.42章节

编译安装intltool包

1.解压并进入intltool包目录

tar -xvf intltool-0.51..tar.gz

cd intltool-0.51.

2.参照书中的说明编译安装

sed -i 's:\\\${:\\\$\\{:' intltool-update.in

./configure --prefix=/usr

make -j8

make -j8 check

make install
install -v -Dm644 doc/I18N-HOWTO /usr/share/doc/intltool-0.51./I18N-HOWTO

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf intltool-0.51.0

第6.43章节

编译安装autoconf包

1.解压并进入autoconf包目录

tar -xvf autoconf-2.69.tar.xz

cd autoconf-2.69

2.参照书中的说明编译安装

sed '361 s/{/\\{/' -i bin/autoscan.in
./configure --prefix=/usr

make -j8

make -j8 check

make install

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf autoconf-2.69

第6.44章节

编译安装automake包

1.解压并进入automake包目录

tar -xvf automake-1.16..tar.xz

cd automake-1.16.

2.参照书中的说明进行编译安装

./configure --prefix=/usr --docdir=/usr/share/doc/automake-1.16.

make -j8

make -j8 check

make install

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf automake-1.16.1

第6.45章节

编译安装xz包

1.解压并进入xz包目录

tar -xvf xz-5.2..tar.xz

cd xz-5.2.

2.参照书中说明编译安装

./configure --prefix=/usr    \
--disable-static \
--docdir=/usr/share/doc/xz-5.2. make -j8 make -j8 check make install
mv -v /usr/bin/{lzma,unlzma,lzcat,xz,unxz,xzcat} /bin
mv -v /usr/lib/liblzma.so.* /lib
ln -svf ../../lib/$(readlink /usr/lib/liblzma.so) /usr/lib/liblzma.so

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf xz-5.2.4

第6.46章节

编译安装kmod包

1.解压并进入kmod包目录

tar -xvf kmod-.tar.xz

cd kmod-

2.参照书中说明编译安装

./configure --prefix=/usr          \
--bindir=/bin \
--sysconfdir=/etc \
--with-rootlibdir=/lib \
--with-xz \
--with-zlib make -j8 make install for target in depmod insmod lsmod modinfo modprobe rmmod; do
ln -sfv ../bin/kmod /sbin/$target
done ln -sfv kmod /bin/lsmod

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf kmod-26

第6.47章节

编译安装gettext包

1.解压并进入gettext包目录

tar -xvf gettext-0.19.8.1.tar.xz

cd gettext-0.19.8.1

2.参照书中说明编译安装

sed -i '/^TESTS =/d' gettext-runtime/tests/Makefile.in &&
sed -i 's/test-lock..EXEEXT.//' gettext-tools/gnulib-tests/Makefile.in sed -e '/AppData/{N;N;p;s/\.appdata\./.metainfo./}' \
-i gettext-tools/its/appdata.loc ./configure --prefix=/usr \
--disable-static \
--docdir=/usr/share/doc/gettext-0.19.8.1 make -j8 make -j8 check make install
chmod -v /usr/lib/preloadable_libintl.so

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf gettext-0.19.8.1

第6.48章节

编译安装libelf包

1.Libelf是elfutils-0.176包的一部分,所以需要解压并进入elfutils-0.173包目录

tar -xvf elfutils-0.176.tar.bz2

cd elfutils-0.176

2.参照书中说明编译安装

./configure --prefix=/usr

make -j8

make -j8 check

make -C libelf install
install -vm644 config/libelf.pc /usr/lib/pkgconfig

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf elfutils-0.176

第6.49章节

编译安装libffi包

1.解压并进入libffi包目录

tar -xvf libffi-3.2..tar.gz

cd libffi-3.2.

2.参照书中说明编译安装

sed -e '/^includesdir/ s/$(libdir).*$/$(includedir)/' \
-i include/Makefile.in sed -e '/^includedir/ s/=.*$/=@includedir@/' \
-e 's/^Cflags: -I${includedir}/Cflags:/' \
-i libffi.pc.in ./configure --prefix=/usr --disable-static --with-gcc-arch=native make -j8 make -j8 check make install

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf libffi-3.2.1

第6.50章节

编译安装openssl包

1.解压并进入openssl包目录

tar -xvf openssl-1.1.1a.tar.gz
cd openssl-1.1.1a

2.参照书中内容编译安装

./config --prefix=/usr         \
--openssldir=/etc/ssl \
--libdir=lib \
shared \
zlib-dynamic make -j8 make -j8 test sed -i '/INSTALL_LIBS/s/libcrypto.a libssl.a//' Makefile
make MANSUFFIX=ssl install mv -v /usr/share/doc/openssl /usr/share/doc/openssl-1.1.1a
cp -vfr doc/* /usr/share/doc/openssl-1.1.1a

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf openssl-1.1.1a

第6.51章节

编译安装python包

1.解压并进入python包目录

tar -xvf Python-3.7.2.tar.xz

cd Python-3.7.2

2.参照书中说明编译安装

./configure --prefix=/usr       \
--enable-shared \
--with-system-expat \
--with-system-ffi \
--with-ensurepip=yes make -j8 make install
chmod -v /usr/lib/libpython3.7m.so
chmod -v /usr/lib/libpython3.so install -v -dm755 /usr/share/doc/python-3.7.2/html tar --strip-components= \
--no-same-owner \
--no-same-permissions \
-C /usr/share/doc/python-3.7.2/html \
-xvf ../python-3.7.2-docs-html.tar.bz2

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf Python-3.7.2

第6.52章节

编译安装ninja包

1.解压并进入ninja包目录

tar -xvf ninja-1.9.0.tar.gz

cd ninja-1.9.0

2.参照书中说明编译安装

python3 configure.py --bootstrap

python3 configure.py
./ninja ninja_test
./ninja_test --gtest_filter=-SubprocessTest.SetWithLots install -vm755 ninja /usr/bin/
install -vDm644 misc/bash-completion /usr/share/bash-completion/completions/ninja
install -vDm644 misc/zsh-completion /usr/share/zsh/site-functions/_ninja

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf ninja-1.9.0

第6.53章节

编译安装meson包

1.解压并进入meson包目录

tar -xvf meson-0.49.2.tar.gz

cd meson-0.49.2

2.参照书中说明编译安装

python3 setup.py build

python3 setup.py install --root=dest
cp -rv dest/* /

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf meson-0.49.2

第6.54章节

编译安装coreutils包

1.解压并进入coreutils包目录

tar -xvf coreutils-8.30.tar.xz

cd coreutils-8.30

2.参照书中说明编译安装

patch -Np1 -i ../coreutils-8.30-i18n-.patch

sed -i '/test.lock/s/^/#/' gnulib-tests/gnulib.mk

autoreconf -fiv
FORCE_UNSAFE_CONFIGURE= ./configure \
--prefix=/usr \
--enable-no-install-program=kill,uptime FORCE_UNSAFE_CONFIGURE= make make NON_ROOT_USERNAME=nobody check-root echo "dummy:x:1000:nobody" >> /etc/group chown -Rv nobody . su nobody -s /bin/bash \
-c "PATH=$PATH make RUN_EXPENSIVE_TESTS=yes check" sed -i '/dummy/d' /etc/group make install mv -v /usr/bin/{cat,chgrp,chmod,chown,cp,date,dd,df,echo} /bin
mv -v /usr/bin/{false,ln,ls,mkdir,mknod,mv,pwd,rm} /bin
mv -v /usr/bin/{rmdir,stty,sync,true,uname} /bin
mv -v /usr/bin/chroot /usr/sbin
mv -v /usr/share/man/man1/chroot. /usr/share/man/man8/chroot.
sed -i s/\"1\"/\"8\"/1 /usr/share/man/man8/chroot.8 mv -v /usr/bin/{head,nice,sleep,touch} /bin

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf coreutils-8.30

第6.55章节

编译安装check包

1.解压并进入check包目录

tar -xvf check-0.12.0.tar.gz
cd check-0.12.0

2.参照书中说明编译安装

./configure --prefix=/usr

make -j8

make -j8 check

make install
sed -i '1 s/tools/usr/' /usr/bin/checkmk

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf check-0.12.0

第6.56章节

编译安装diffutils包

1.解压并进入diffutils包目录

tar -xvf diffutils-3.7.tar.xz

cd diffutils-3.7

2.参照书中说明编译安装

./configure --prefix=/usr

make -j8

make -j8 check

make install

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf diffutils-3.7

第6.57章节

编译安装gawk包

1.解压并进入gawk包目录

tar -xvf gawk-4.2.1.tar.xz

cd  gawk-4.2.1

2.参照书中说明编译安装

sed -i 's/extras//' Makefile.in

./configure --prefix=/usr

make -j8 

make -j8 check

make install

mkdir -v /usr/share/doc/gawk-4.2.
cp -v doc/{awkforai.txt,*.{eps,pdf,jpg}} /usr/share/doc/gawk-4.2.

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf gawk-4.2.1

第6.58章节

编译安装findutils包

1.解压并进入findutils包目录

tar -xvf findutils-4.6.0.tar.gz
cd findutils-4.6.0

2.参照书中说明编译安装

sed -i 's/test-lock..EXEEXT.//' tests/Makefile.in

sed -i 's/IO_ftrylockfile/IO_EOF_SEEN/' gl/lib/*.c
sed -i '/unistd/a #include <sys/sysmacros.h>' gl/lib/mountlist.c
echo "#define _IO_IN_BACKUP 0x100" >> gl/lib/stdio-impl.h ./configure --prefix=/usr --localstatedir=/var/lib/locate make -j8 make -j8 check make install mv -v /usr/bin/find /bin
sed -i 's|find:=${BINDIR}|find:=/bin|' /usr/bin/updatedb

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf findutils-4.6.0

第6.59章节

编译安装groff包

1.解压并进入groff包目录

tar -xvf groff-1.22.4.tar.gz

cd groff-1.22.4

2.参照书中说明编译安装

PAGE=A4 ./configure --prefix=/usr

make -j1

make install

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf groff-1.22.4

第6.60章节

编译安装grub包

1.解压并进入grub包目录

tar -xvf grub-2.02.tar.xz

cd grub-2.02

2.参照书中说明编译安装

./configure --prefix=/usr          \
--sbindir=/sbin \
--sysconfdir=/etc \
--disable-efiemu \
--disable-werror make -j8 make install
mv -v /etc/bash_completion.d/grub /usr/share/bash-completion/completions
 

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf grub-2.02

第6.61章节

编译安装less包

1.解压并进入less包目录

tar -xvf less-530.tar.gz

cd less-530

2.参照书中说明编译安装

./configure --prefix=/usr --sysconfdir=/etc

make -j8

make install

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf less-530

第6.62章节

编译安装gzip包

1.解压并进入bzip包目录

tar -xvf gzip-1.10.tar.xz

cd gzip-1.10

2.参照书中说明编译安装

./configure --prefix=/usr

make -j8

make -j8 check

make install

mv -v /usr/bin/gzip /bin

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf gzip-1.10

第6.63章节

编译安装iproute包

1.解压并进入iproute包目录

tar -xvf iproute2-4.20.0.tar.xz

cd iproute2-4.20.0

2.参照书中说明编译安装

sed -i /ARPD/d Makefile
rm -fv man/man8/arpd.8 sed -i 's/.m_ipt.o//' tc/Makefile make -j8 make DOCDIR=/usr/share/doc/iproute2-4.20.0 install

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf iproute2-4.20.0

第6.64章节

编译安装kbd包

1.解压并进入kbd包目录

tar -xvf kbd-2.0.4.tar.xz

cd kbd-2.0.4

2.参照书中说明编译安装

patch -Np1 -i ../kbd-2.0.4-backspace-1.patch

sed -i 's/\(RESIZECONS_PROGS=\)yes/\1no/g' configure
sed -i 's/resizecons.8 //' docs/man/man8/Makefile.in PKG_CONFIG_PATH=/tools/lib/pkgconfig ./configure --prefix=/usr --disable-vlock make -j8 make -j8 check make install mkdir -v /usr/share/doc/kbd-2.0.4
cp -R -v docs/doc/* /usr/share/doc/kbd-2.0.4

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf kbd-2.0.4

第6.65章节

编译安装libpipeline包

1.解压并进入libpipeline包目录

tar -xvf libpipeline-1.5.1.tar.gz 

cd libpipeline-1.5.1

2.参照书中说明编译安装

./configure --prefix=/usr

make -j8

make -j8 check

make install

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf libpipeline-1.5.1

第6.66章节

编译安装make包

1.解压并进入make包目录

tar -xvf make-4.2.1.tar.bz2

cd make-4.2.1

2.参照书中说明编译安装

sed -i '211,217 d; 219,229 d; 232 d' glob/glob.c

./configure --prefix=/usr

make -j8

make PERL5LIB=$PWD/tests/ check

make install

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf make-4.2.1

第6.67章节

编译安装patch包

1.解压并进入patch包目录

tar -xvf patch-2.7.6.tar.xz

cd patch-2.7.6 

2.参照书中说明编译安装patch包

./configure --prefix=/usr

make -j8

make -j8 check

make install

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf patch-2.7.6

第6.68章节

编译安装man-db包

1.解压并进入man-db包目录

tar -xvf man-db-2.8.5.tar.xz

cd man-db-2.8.5

2.参照书中说明编译安装

./configure --prefix=/usr                        \
--docdir=/usr/share/doc/man-db-2.8. \
--sysconfdir=/etc \
--disable-setuid \
--enable-cache-owner=bin \
--with-browser=/usr/bin/lynx \
--with-vgrind=/usr/bin/vgrind \
--with-grap=/usr/bin/grap \
--with-systemdtmpfilesdir= \
--with-systemdsystemunitdir= make -j8 make -j8 check make install

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf man-db-2.8.5

第6.69章节

编译安装tar包

1.解压并进入tar包

tar -xvf tar-1.31.tar.xz

cd tar-1.31

2.参照书中说明编译安装

sed -i 's/abort.*/FALLTHROUGH;/' src/extract.c

FORCE_UNSAFE_CONFIGURE=  \
./configure --prefix=/usr \
--bindir=/bin make -j8 make -j8 check make install
make -C doc install-html docdir=/usr/share/doc/tar-1.31

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf tar-1.31

第6.70章节

编译安装texinfo包

1.解压并进入texinfo包目录

tar -xvf texinfo-6.5.tar.xz

cd texinfo-6.5

2.参照书中说明编译安装

sed -i '5481,5485 s/({/(\\{/' tp/Texinfo/Parser.pm

./configure --prefix=/usr --disable-static

make -j8

make -j8 check

make install

make TEXMF=/usr/share/texmf install-tex

pushd /usr/share/info
rm -v dir
for f in *
do install-info $f dir 2>/dev/null
done
popd

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf texinfo-6.5

第6.68章节

第6.69章节

第6.70章节

编译安装util-linux包

1.解压并进入util-linux包目录

tar -xvf util-linux-2.32..tar.xz

cd util-linux-2.32.

2.参照书中说明编译安装

mkdir -pv /var/lib/hwclock

rm -vf /usr/include/{blkid,libmount,uuid}

./configure ADJTIME_PATH=/var/lib/hwclock/adjtime   \
--docdir=/usr/share/doc/util-linux-2.32. \
--disable-chfn-chsh \
--disable-login \
--disable-nologin \
--disable-su \
--disable-setpriv \
--disable-runuser \
--disable-pylibmount \
--disable-static \
--without-python \
--without-systemd \
--without-systemdsystemunitdir make -j8 chown -Rv nobody .
su nobody -s /bin/bash -c "PATH=$PATH make -k check" make install

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf util-linux-2.32.1

第6.71章节

编译安装vim包

1.解压并进入vim包目录

tar -xvf vim-8.1.tar.bz2

cd vim81/

2.参照书中说明编译安装

echo '#define SYS_VIMRC_FILE "/etc/vimrc"' >> src/feature.h

./configure --prefix=/usr

make -j8

LANG=en_US.UTF-8 make -j1 test &> vim-test.log

make install

ln -sv vim /usr/bin/vi
for L in /usr/share/man/{,*/}man1/vim.1; do
ln -sv vim.1 $(dirname $L)/vi.1
done ln -sv ../vim/vim81/doc /usr/share/doc/vim-8.1

3.创建vim配置文件

cat > /etc/vimrc << "EOF"
" Begin /etc/vimrc " Ensure defaults are set before customizing settings, not after
source $VIMRUNTIME/defaults.vim
let skip_defaults_vim=1 set nocompatible
set backspace=2
set mouse=
syntax on
if (&term == "xterm") || (&term == "putty")
set background=dark
endif " End /etc/vimrc
EOF

4.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf vim81/

第6.72章节

编译安装procps-ng包

1.解压并进入procps-ng包目录

tar -xvf  procps-ng-3.3..tar.xz

cd procps-ng-3.3.

2.参照书中内容编译安装

./configure --prefix=/usr                            \
--exec-prefix= \
--libdir=/usr/lib \
--docdir=/usr/share/doc/procps-ng-3.3. \
--disable-static \
--disable-kill make -j8 sed -i -r 's|(pmap_initname)\\\$|\1|' testsuite/pmap.test/pmap.exp
sed -i '/set tty/d' testsuite/pkill.test/pkill.exp
rm testsuite/pgrep.test/pgrep.exp
make -j8 check make install mv -v /usr/lib/libprocps.so.* /lib
ln -sfv ../../lib/$(readlink /usr/lib/libprocps.so) /usr/lib/libprocps.so

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf procps-ng-3.3.

第6.73章节

编译安装util-linux包

1.解压并进入util-linux包目录

tar -xvf util-linux-2.33..tar.xz
cd util-linux-2.33.

2.参照书中内容编译安装

mkdir -pv /var/lib/hwclock

rm -vf /usr/include/{blkid,libmount,uuid}

./configure ADJTIME_PATH=/var/lib/hwclock/adjtime   \
--docdir=/usr/share/doc/util-linux-2.33. \
--disable-chfn-chsh \
--disable-login \
--disable-nologin \
--disable-su \
--disable-setpriv \
--disable-runuser \
--disable-pylibmount \
--disable-static \
--without-python \
--without-systemd \
--without-systemdsystemunitdir make -j8 chown -Rv nobody .
su nobody -s /bin/bash -c "PATH=$PATH make -k check" make install

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf util-linux-2.33.

第6.74章节

编译安装e2fsprogs包

1.解压并进入e2fsprogs包目录

tar -xvf  e2fsprogs-1.44.5.tar.gz
cd  e2fsprogs-1.44.5

2.参照书中内容编译安装

mkdir -v build
cd build ../configure --prefix=/usr \
--bindir=/bin \
--with-root-prefix="" \
--enable-elf-shlibs \
--disable-libblkid \
--disable-libuuid \
--disable-uuidd \
--disable-fsck make -j8 make -j8 check make install make install-libs chmod -v u+w /usr/lib/{libcom_err,libe2p,libext2fs,libss}.a gunzip -v /usr/share/info/libext2fs.info.gz
install-info --dir-file=/usr/share/info/dir /usr/share/info/libext2fs.info makeinfo -o doc/com_err.info ../lib/et/com_err.texinfo
install -v -m644 doc/com_err.info /usr/share/info
install-info --dir-file=/usr/share/info/dir /usr/share/info/com_err.info

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf e2fsprogs-1.44.5

第6.75章节

编译安装sysklogd包

1.解压并进入sysklogd包目录

tar -xvf sysklogd-1.5..tar.gz‘

cd sysklogd-1.5.

2.参照书中说明编译安装

sed -i '/Error loading kernel symbols/{n;n;d}' ksym_mod.c
sed -i 's/union wait/int/' syslogd.c make -j8 make BINDIR=/sbin install

3.创建配置文件

cat > /etc/syslog.conf << "EOF"
# Begin /etc/syslog.conf auth,authpriv.* -/var/log/auth.log
*.*;auth,authpriv.none -/var/log/sys.log
daemon.* -/var/log/daemon.log
kern.* -/var/log/kern.log
mail.* -/var/log/mail.log
user.* -/var/log/user.log
*.emerg * # End /etc/syslog.conf
EOF

4.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf sysklogd-1.5.

第6.76章节

编译安装sysvinit包

1.解压并进入sysvinit包目录

tar -xvf sysvinit-2.93.tar.xz

cd sysvinit-2.93

2.参照书中内容编译安装

patch -Np1 -i ../sysvinit-2.93-consolidated-.patch

make -C src

make -C src install

3.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf sysvinit-2.93

第6.77章节

编译安装eudev包

1.解压并进入eudev包目录

tar -xvf eudev-3.2..tar.gz

cd eudev-3.2.

2.参照书中说明编译安装

cat > config.cache << "EOF"
HAVE_BLKID=
BLKID_LIBS="-lblkid"
BLKID_CFLAGS="-I/tools/include"
EOF ./configure --prefix=/usr \
--bindir=/sbin \
--sbindir=/sbin \
--libdir=/usr/lib \
--sysconfdir=/etc \
--libexecdir=/lib \
--with-rootprefix= \
--with-rootlibdir=/lib \
--enable-manpages \
--disable-static \
--config-cache LIBRARY_PATH=/tools/lib make mkdir -pv /lib/udev/rules.d
mkdir -pv /etc/udev/rules.d make LD_LIBRARY_PATH=/tools/lib check make LD_LIBRARY_PATH=/tools/lib install tar -xvf ../udev-lfs-.tar.bz2
make -f udev-lfs-/Makefile.lfs install

3.每次更新硬件信息时都需要运行此命令

LD_LIBRARY_PATH=/tools/lib udevadm hwdb --update
4.返回sources目录并删除包目录

cd /mnt/lfs/sources
rm -rf eudev-3.2.

第6.79章节

从二进制文件和库中删除调试符号 按照书籍中的命令操作即可(可选)建议执行此项操作

save_lib="ld-2.29.so libc-2.29.so libpthread-2.29.so libthread_db-1.0.so"

cd /lib

for LIB in $save_lib; do
objcopy --only-keep-debug $LIB $LIB.dbg
strip --strip-unneeded $LIB
objcopy --add-gnu-debuglink=$LIB.dbg $LIB
done save_usrlib="libquadmath.so.0.0.0 libstdc++.so.6.0.25
libitm.so.1.0. libatomic.so.1.2." cd /usr/lib for LIB in $save_usrlib; do
objcopy --only-keep-debug $LIB $LIB.dbg
strip --strip-unneeded $LIB
objcopy --add-gnu-debuglink=$LIB.dbg $LIB
done unset LIB save_lib save_usrlib exec /tools/bin/bash /tools/bin/find /usr/lib -type f -name \*.a \
-exec /tools/bin/strip --strip-debug {} ';' /tools/bin/find /lib /usr/lib -type f \( -name \*.so* -a ! -name \*dbg \) \
-exec /tools/bin/strip --strip-unneeded {} ';' /tools/bin/find /{bin,sbin} /usr/{bin,sbin,libexec} -type f \
-exec /tools/bin/strip --strip-all {} ';'

第6.80章节

1.清理运行测试剩下的一些额外文件

rm -rf /tmp/*

2.退出

exit

3.chroot进入lfs系统目录

chroot "$LFS" /usr/bin/env -i          \
HOME=/root TERM="$TERM" \
PS1='(lfs chroot) \u:\w\$ ' \
PATH=/bin:/usr/bin:/sbin:/usr/sbin \
/bin/bash --login

4.删除tools目录

rm -rf tools/

5.删除无用的库

rm -f /usr/lib/lib{bfd,opcodes}.a
rm -f /usr/lib/libbz2.a
rm -f /usr/lib/lib{com_err,e2p,ext2fs,ss}.a
rm -f /usr/lib/libltdl.a
rm -f /usr/lib/libfl.a
rm -f /usr/lib/libz.a find /usr/lib /usr/libexec -name \*.la -delete

lfs(systemv版本)学习笔记第4页:https://www.cnblogs.com/renren-study-notes/p/10279446.html

lfs(systemv版本)学习笔记-第3页的更多相关文章

  1. lfs(systemv版本)学习笔记-第2页

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! lfs(systemv)学习笔记-第1页 的地址:https://www.cnblogs.com/renren-study-no ...

  2. lfs(systemv版本)学习笔记-第4页

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! lfs(systemv版本)学习笔记第3页:https://www.cnblogs.com/renren-study-notes ...

  3. lfs(systemv版本)学习笔记-第1页

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! 一名linux爱好者,记录构建Linux From Scratch的过程 经博客园-骏马金龙前辈介绍,开始接触学习lfs,用博客 ...

  4. lfs(systemd版本)学习笔记-第3页

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! lfs(systemd)学习笔记-第2页 的地址:https://www.cnblogs.com/renren-study-no ...

  5. lfs(systemd版本)学习笔记-第1页

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! 一名linux爱好者,记录构建Linux From Scratch的过程 经博客园-骏马金龙前辈介绍,开始接触学习lfs,用博客 ...

  6. lfs(systemd版本)学习笔记-第4页

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! lfs(systemd版本)学习笔记-第3页 的地址:https://www.cnblogs.com/renren-study- ...

  7. lfs(systemd版本)学习笔记-第2页

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! lfs(systemd)学习笔记-第1页 的地址:https://www.cnblogs.com/renren-study-no ...

  8. 关于Angular.js Routing 的学习笔记(实现单页应用)

    最近开始学习angular.js,发现angular.js确实很方便,也很强大.在看到 AngularJS Routing and Multiple Views 这一部分的时候,有点乱.现在通过记录一 ...

  9. react-router 4.0版本学习笔记

    Router 所有路由组件的底层接口,一般情况都不使用,而是使用更加高级的路由. 最常用的有两种<BrowserRouter>.<HashRouter> <Browser ...

随机推荐

  1. consul服务注册与发现

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  2. centos部署flask

    1.先安装uwsgi pip install uwsgi 2.在你的项目根目录下创建一个配置文件uwsgiconfig.ini(uwsgi支持多种配置文件格式,xml,ini,json等) [uwsg ...

  3. 678 "流浪地球"为什么是个好地方?(系统越复杂拥有好运气的机会也就越大)

    运气,其实就是一个复杂系统孕育出的,超出已知经验的解决方案.它不是没有产生机制.只不过,这个机制太复杂,涉及的因素太多.我们没法复制.所以,我们只能笼统的,把这套机制称为运气,或者命数. 举个例子,假 ...

  4. 【Redis面试题】Redis的字符串是怎么实现的?

    年前本人在找工作面试时在Redis相关问题上可栽了跟头.在面试前按常规套路准备了一下,比如 Redis 的常用5种数据结构,Redis持久化策略,Redis实现分布式锁,简单发布订阅等等都准备了,当时 ...

  5. Hybrid App 原理解析

    目录 一.现有混合方案 二.Hybrid技术原理 三.Native 通知 H5 (Native 调用 JS) 3.1 Android 调 H5 3.2 iOS 调 H5 四.H5 通知 Native( ...

  6. 21天打造分布式爬虫-Selenium爬取拉钩职位信息(六)

    6.1.爬取第一页的职位信息 第一页职位信息 from selenium import webdriver from lxml import etree import re import time c ...

  7. 微服务架构集大成者—Spring Cloud (转载)

    软件是有生命的,你做出来的架构决定了这个软件它这一生是坎坷还是幸福. 本文不是讲解如何使用Spring Cloud的教程,而是探讨Spring Cloud是什么,以及它诞生的背景和意义. 1 背景 2 ...

  8. WTF小程序之animation

    目录 animation 的几个关键方法 step 方法 export 方法 如何实现 infinate 动画 小程序的 animation 有一套怪异的 API,既不符合 css 的 keyfram ...

  9. ubuntu16.04 程序开机自启动设置及启动优化

    使用过程中,为了方便使用,有一些程序需要开机时自启动应用,下面将介绍一下ubuntu16.04下程序的开机自启动设置方法. 1  建立一个可执行程序的运行脚本如 keepalive.sh.内部写入要执 ...

  10. 全网最详细的IDEA里如何正确新建普通的Java web项目并发布到Tomcat上运行成功【博主强烈推荐】(类似eclipse里同一个workspace下【一个子项目】并存)(图文详解)

    不多说,直接上干货! 首先,大家要明确,IDEA.Eclipse和MyEclipse等编辑器之间的新建和运行手法是不一样的. 如果是在Myeclipse里,则是File -> new -> ...