lfs(systemv版本)学习笔记-第3页
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页的更多相关文章
- lfs(systemv版本)学习笔记-第2页
我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! lfs(systemv)学习笔记-第1页 的地址:https://www.cnblogs.com/renren-study-no ...
- lfs(systemv版本)学习笔记-第4页
我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! lfs(systemv版本)学习笔记第3页:https://www.cnblogs.com/renren-study-notes ...
- lfs(systemv版本)学习笔记-第1页
我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! 一名linux爱好者,记录构建Linux From Scratch的过程 经博客园-骏马金龙前辈介绍,开始接触学习lfs,用博客 ...
- lfs(systemd版本)学习笔记-第3页
我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! lfs(systemd)学习笔记-第2页 的地址:https://www.cnblogs.com/renren-study-no ...
- lfs(systemd版本)学习笔记-第1页
我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! 一名linux爱好者,记录构建Linux From Scratch的过程 经博客园-骏马金龙前辈介绍,开始接触学习lfs,用博客 ...
- lfs(systemd版本)学习笔记-第4页
我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! lfs(systemd版本)学习笔记-第3页 的地址:https://www.cnblogs.com/renren-study- ...
- lfs(systemd版本)学习笔记-第2页
我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! lfs(systemd)学习笔记-第1页 的地址:https://www.cnblogs.com/renren-study-no ...
- 关于Angular.js Routing 的学习笔记(实现单页应用)
最近开始学习angular.js,发现angular.js确实很方便,也很强大.在看到 AngularJS Routing and Multiple Views 这一部分的时候,有点乱.现在通过记录一 ...
- react-router 4.0版本学习笔记
Router 所有路由组件的底层接口,一般情况都不使用,而是使用更加高级的路由. 最常用的有两种<BrowserRouter>.<HashRouter> <Browser ...
随机推荐
- consul服务注册与发现
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- centos部署flask
1.先安装uwsgi pip install uwsgi 2.在你的项目根目录下创建一个配置文件uwsgiconfig.ini(uwsgi支持多种配置文件格式,xml,ini,json等) [uwsg ...
- 678 "流浪地球"为什么是个好地方?(系统越复杂拥有好运气的机会也就越大)
运气,其实就是一个复杂系统孕育出的,超出已知经验的解决方案.它不是没有产生机制.只不过,这个机制太复杂,涉及的因素太多.我们没法复制.所以,我们只能笼统的,把这套机制称为运气,或者命数. 举个例子,假 ...
- 【Redis面试题】Redis的字符串是怎么实现的?
年前本人在找工作面试时在Redis相关问题上可栽了跟头.在面试前按常规套路准备了一下,比如 Redis 的常用5种数据结构,Redis持久化策略,Redis实现分布式锁,简单发布订阅等等都准备了,当时 ...
- Hybrid App 原理解析
目录 一.现有混合方案 二.Hybrid技术原理 三.Native 通知 H5 (Native 调用 JS) 3.1 Android 调 H5 3.2 iOS 调 H5 四.H5 通知 Native( ...
- 21天打造分布式爬虫-Selenium爬取拉钩职位信息(六)
6.1.爬取第一页的职位信息 第一页职位信息 from selenium import webdriver from lxml import etree import re import time c ...
- 微服务架构集大成者—Spring Cloud (转载)
软件是有生命的,你做出来的架构决定了这个软件它这一生是坎坷还是幸福. 本文不是讲解如何使用Spring Cloud的教程,而是探讨Spring Cloud是什么,以及它诞生的背景和意义. 1 背景 2 ...
- WTF小程序之animation
目录 animation 的几个关键方法 step 方法 export 方法 如何实现 infinate 动画 小程序的 animation 有一套怪异的 API,既不符合 css 的 keyfram ...
- ubuntu16.04 程序开机自启动设置及启动优化
使用过程中,为了方便使用,有一些程序需要开机时自启动应用,下面将介绍一下ubuntu16.04下程序的开机自启动设置方法. 1 建立一个可执行程序的运行脚本如 keepalive.sh.内部写入要执 ...
- 全网最详细的IDEA里如何正确新建普通的Java web项目并发布到Tomcat上运行成功【博主强烈推荐】(类似eclipse里同一个workspace下【一个子项目】并存)(图文详解)
不多说,直接上干货! 首先,大家要明确,IDEA.Eclipse和MyEclipse等编辑器之间的新建和运行手法是不一样的. 如果是在Myeclipse里,则是File -> new -> ...