博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
lfs(systemv版本)学习笔记-第2页
阅读量:5248 次
发布时间:2019-06-14

本文共 15007 字,大约阅读时间需要 50 分钟。

lfs(systemv)学习笔记-第1页 的地址

 六.构建工具链

1.书中第五章节中构建的所有包不建议进行测试。

2.这时你的命令行或终端的环境应该是:

1.变量:export LFS=/mnt/lfs
2.已经挂载你为lfs创建的所有分区
3.切换到lfs用户。

第5.4章节

构建binutils包

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

cd $LFS/sources/

2.解压Binutils包并进入binutils包的目录:

tar -xvf binutils-2.32.tar.xz
cd binutils-2.32

3.运行书中的构建过程

4.创建编译用的目录并进入

mkdir -v buildcd build

5.设置Binutils进行编译

../configure --prefix=/tools            \             --with-sysroot=$LFS        \             --with-lib-path=/tools/lib \             --target=$LFS_TGT          \             --disable-nls              \             --disable-werror

6.编译包

make -j8 (这里使用笔记1中的4.5章节所介绍的make -j(n)参数多线程编译)

7.如果构建x64的系统需要创建符号链接

case $(uname -m) in  x86_64) mkdir -v /tools/lib && ln -sv lib /tools/lib64 ;;esac

8.安装包

make install

9.返回sources目录并删除binutils包的解压目录

cd $LFS/sources/rm -rf binutils-2.32

第5.5章节

第一遍编译gcc

1.解压gcc并进入gcc的解压目录

tar -xvf gcc-8.2.0.tar.xzcd gcc-8.2.0
 

2.运行书中的编译安装过程

tar -xf ../mpfr-4.0.2.tar.xzmv -v mpfr-4.0.2 mpfrtar -xf ../gmp-6.1.2.tar.xzmv -v gmp-6.1.2 gmptar -xf ../mpc-1.1.0.tar.gzmv -v mpc-1.1.0 mpcfor file in gcc/config/{linux,i386/linux{,64}}.hdo  cp -uv $file{,.orig}  sed -e 's@/lib\(64\)\?\(32\)\?/ld@/tools&@g' \      -e 's@/usr@/tools@g' $file.orig > $file  echo '#undef STANDARD_STARTFILE_PREFIX_1#undef STANDARD_STARTFILE_PREFIX_2#define STANDARD_STARTFILE_PREFIX_1 "/tools/lib/"#define STANDARD_STARTFILE_PREFIX_2 ""' >> $file  touch $file.origdonecase $(uname -m) in  x86_64)    sed -e '/m64=/s/lib64/lib/' \        -i.orig gcc/config/i386/t-linux64 ;;esacmkdir -v buildcd       build../configure                                       \    --target=$LFS_TGT                              \    --prefix=/tools                                \    --with-glibc-version=2.11                      \    --with-sysroot=$LFS                            \    --with-newlib                                  \    --without-headers                              \    --with-local-prefix=/tools                     \    --with-native-system-header-dir=/tools/include \    --disable-nls                                  \    --disable-shared                               \    --disable-multilib                             \    --disable-decimal-float                        \    --disable-threads                              \    --disable-libatomic                            \    --disable-libgomp                              \    --disable-libmpx                               \    --disable-libquadmath                          \    --disable-libssp                               \    --disable-libvtv                               \    --disable-libstdcxx                            \    --enable-languages=c,c++make  -j8make install

3.返回sources目录,并删除gcc的解压包目录。

cd $LFS/sources/rm -rf  gcc-8.2.0

第5.6章节 

1.Linux API Headers在linux-4.18.5.tar.xz中,需要解压并操作的包是linux-4.18.5.tar.xz软件包。

2.解压linux包并进入linux的解压目录

tar -xvf linux-4.20.12.tar.xzcd   linux-4.20.12
 

3.运行书中的编译命令

make mrpropermake INSTALL_HDR_PATH=dest headers_installcp -rv dest/include/* /tools/include

4.返回sources目录并删除linux的解压包

cd $LFS/sources/rm -rf  linux-4.20.12

第5.7章节

1.解压并进入glibc软件包的解压目录

tar -xvf glibc-2.29.tar.xzcd glibc-2.29

2.运行书中的编译安装命令

mkdir -v buildcd       build../configure                             \      --prefix=/tools                    \      --host=$LFS_TGT                    \      --build=$(../scripts/config.guess) \      --enable-kernel=3.2 \ --with-headers=/tools/include make -j1 make install

3.执行完整性检查核对输出内容并清理测试文件

echo 'int main(){}' > dummy.c$LFS_TGT-gcc dummy.creadelf -l a.out | grep ': /tools'rm -v dummy.c a.out

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

cd $LFS/sources/rm -rf glibc-2.29

第5.8章节

1.Libstdc ++在gcc软件包中,解压gcc-8.2.0包,并进入gcc目录进行构建

tar -xvf gcc-8.2.0.tar.xzcd gcc-8.2.0

2.运行书中的编译安装命令

mkdir -v buildcd       build../libstdc++-v3/configure           \    --host=$LFS_TGT                 \    --prefix=/tools                 \    --disable-multilib              \    --disable-nls \ --disable-libstdcxx-threads \ --disable-libstdcxx-pch \ --with-gxx-include-dir=/tools/$LFS_TGT/include/c++/8.2.0 make -j8 make install

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

cd $LFS/sources/rm -rf  gcc-8.2.0

第5.9章节

binutils的第二次编译安装

1.解压并进入binutils软件包目录

tar -xvf binutils-2.32.tar.xzcd binutils-2.32
 

2.运行书中的编译安装命令

mkdir -v buildcd       buildCC=$LFS_TGT-gcc                \AR=$LFS_TGT-ar                 \RANLIB=$LFS_TGT-ranlib         \../configure                   \    --prefix=/tools            \    --disable-nls              \    --disable-werror           \    --with-lib-path=/tools/lib \    --with-sysrootmake -j8make install

3.准备链接

make -C ld cleanmake -C ld LIB_PATH=/usr/lib:/libcp -v ld/ld-new /tools/bin

4.返回并删除binutils包

cd $LFS/sources/rm -rf binutils-2.32

第5.10章节

gcc的第二次编译安装

1.解压并进入gcc包目录

tar -xvf gcc-8.2.0.tar.xzcd gcc-8.2.0

2.运行书中的编译安装命令,建立工具链并检查工具链

cat gcc/limitx.h gcc/glimits.h gcc/limity.h > \  `dirname $($LFS_TGT-gcc -print-libgcc-file-name)`/include-fixed/limits.hfor file in gcc/config/{linux,i386/linux{,64}}.hdo  cp -uv $file{,.orig}  sed -e 's@/lib\(64\)\?\(32\)\?/ld@/tools&@g' \      -e 's@/usr@/tools@g' $file.orig > $file  echo '#undef STANDARD_STARTFILE_PREFIX_1#undef STANDARD_STARTFILE_PREFIX_2#define STANDARD_STARTFILE_PREFIX_1 "/tools/lib/"#define STANDARD_STARTFILE_PREFIX_2 ""' >> $file  touch $file.origdonecase $(uname -m) in  x86_64)    sed -e '/m64=/s/lib64/lib/' \        -i.orig gcc/config/i386/t-linux64  ;;esactar -xf ../mpfr-4.0.2.tar.xzmv -v mpfr-4.0.2 mpfrtar -xf ../gmp-6.1.2.tar.xzmv -v gmp-6.1.2 gmptar -xf ../mpc-1.1.0.tar.gzmv -v mpc-1.1.0 mpcmkdir -v buildcd       buildCC=$LFS_TGT-gcc                                    \CXX=$LFS_TGT-g++                                   \AR=$LFS_TGT-ar                                     \RANLIB=$LFS_TGT-ranlib                             \../configure                                       \    --prefix=/tools                                \    --with-local-prefix=/tools                     \    --with-native-system-header-dir=/tools/include \    --enable-languages=c,c++                       \    --disable-libstdcxx-pch                        \    --disable-multilib                             \    --disable-bootstrap                            \    --disable-libgompmake -j8make installln -sv gcc /tools/bin/ccecho 'int main(){}' > dummy.ccc dummy.creadelf -l a.out | grep ': /tools'rm -v dummy.c a.out

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

cd $LFS/sources/rm -rf gcc-8.2.0

第5.11章节

构建安装tcl

1.解压并进入tcl包

tar -xvf tcl8.6.9-src.tar.gzcd tcl8.6.9-src
 

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

cd unix./configure --prefix=/toolsmake -j8make install

3.配置tcl

chmod -v u+w /tools/lib/libtcl8.6.somake install-private-headersln -sv tclsh8.6 /tools/bin/tclsh

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

cd $LFS/sources/rm -rf tcl8.6.9-src

第5.12章节

编译安装expect包

1.解压并进入expect目录

tar -xvf expect5.45.4.tar.gzcd expect5.45.4
 

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

cp -v configure{,.orig}sed 's:/usr/local/bin:/bin:' configure.orig > configure./configure --prefix=/tools       \            --with-tcl=/tools/lib \            --with-tclinclude=/tools/includemake -j8make SCRIPTS="" install

3.返回sources目录并删除解压目录

cd $LFS/sources/rm -rf expect5.45.4

第5.13章节

编译安装dejagnu包

1.解压并进入dejagnu包

tar -xvf dejagnu-1.6.2.tar.gzcd dejagnu-1.6.2

2.参照书中方法编译安装

./configure --prefix=/toolsmake install

3.返回sources目录并删除解压目录

cd $LFS/sources/rm -rf  dejagnu-1.6.2

第5.14章节

编译安装m4包

1.解压并进入m4包目录

tar -xvf m4-1.4.18.tar.xzcd  m4-1.4.18

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

sed -i 's/IO_ftrylockfile/IO_EOF_SEEN/' lib/*.cecho "#define _IO_IN_BACKUP 0x100" >> lib/stdio-impl.h./configure --prefix=/toolsmake -j8make install

3.返回sources目录并删除解压目录

cd $LFS/sources/rm -rf  m4-1.4.18

第5.15章节

编译安装ncurses包

1.解压并进入ncurses包

tar -xvf ncurses-6.1.tar.gzcd  ncurses-6.1

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

sed -i s/mawk// configure./configure --prefix=/tools \            --with-shared   \            --without-debug \            --without-ada   \            --enable-widec  \            --enable-overwritemake -j8make install

3.返回sources目录并删除解压目录

cd $LFS/sources/rm -rf ncurses-6.1

第5.16章节

编译安装bash

1.解压并进入bash包目录

tar -xvf bash-5.0.tar.gzcd bash-5.0
 

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

/configure --prefix=/tools --without-bash-mallocmake -j8make installln -sv bash /tools/bin/sh

3.返回sources目录并删除解压目录

cd $LFS/sources/rm -rf bash-5.0

第5.17章节

编译安装bison

1.解压并进入bison包目录

tar -xvf bison-3.3.2.tar.xzcd bison-3.3.2
 

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

./configure --prefix=/toolsmake -j8make install

3.返回sources目录并删除解压目录

cd $LFS/sources/rm -rf bison-3.3.2

第5.18章节

编译安装bzip2包

1.解压并进入bzip2包目录

tar -xvf bzip2-1.0.6.tar.gzcd  bzip2-1.0.6

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

make -j8make PREFIX=/tools install

3.返回sources目录并删除解压目录

cd $LFS/sources/rm -rf bzip2-1.0.6

第5.19章节

编译安装coreutils包

1.解压并进入coreutils包目录

tar -xvf coreutils-8.30.tar.xzcd  coreutils-8.30

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

./configure --prefix=/tools --enable-install-program=hostnamemake -j8make install

3.返回sources目录并删除解压目录

cd $LFS/sources/rm -rf coreutils-8.30

第5.20章节

编译安装diffutils包 

1.解压并进入diffutils包目录

tar -xvf diffutils-3.7.tar.xzcd  diffutils-3.7

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

./configure --prefix=/toolsmake -j8make install

3.返回sources目录并删除解压目录

cd $LFS/sources/rm -rf diffutils-3.7

第5.21章节

编译安装file包

1.解压并进入file包目录

tar -xvf file-5.36.tar.gzcd  file-5.36

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

./configure --prefix=/toolsmake -j8make install

3.返回sources目录并删除解压目录

cd $LFS/sources/rm -rf file-5.36

第5.22章节

编译安装findutils包

1.解压并进入findutils包目录

tar -xvf findutils-4.6.0.tar.gzcd  findutils-4.6.0

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

sed -i 's/IO_ftrylockfile/IO_EOF_SEEN/' gl/lib/*.csed -i '/unistd/a #include 
' gl/lib/mountlist.cecho "#define _IO_IN_BACKUP 0x100" >> gl/lib/stdio-impl.h./configure --prefix=/toolsmake -j8make install

3.返回sources目录并删除解压目录

cd $LFS/sources/rm -rf findutils-4.6.0

第5.23章节

编译安装gawk包

1.解压并进入gawk包目录

tar -xvf gawk-4.2.1.tar.xzcd gawk-4.2.1

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

./configure --prefix=/toolsmake -j8make install

3.返回sources目录并删除解压目录

cd $LFS/sources/rm -rf gawk-4.2.1

第5.24章节

编译安装gettext包

1.解压并进入gettext包目录

tar -xvf gettext-0.19.8.1.tar.xzcd gettext-0.19.8.1

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

cd gettext-toolsEMACS="no" ./configure --prefix=/tools --disable-sharedmake -C gnulib-libmake -C intl pluralx.cmake -C src msgfmtmake -C src msgmergemake -C src xgettextcp -v src/{msgfmt,msgmerge,xgettext} /tools/bin

3.返回sources目录并删除解压目录

cd $LFS/sources/rm -rf gettext-0.19.8.1

第5.25章节

编译安装grep包

1.解压并进入grep包目录

tar -xvf grep-3.3.tar.xzcd  grep-3.3

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

./configure --prefix=/toolsmake -j8make install

3.返回sources目录并删除解压目录

cd $LFS/sources/rm -rf grep-3.3

第5.26章节

编译安装gzip包

1.解压并进入gzip包目录

tar -xvf gzip-1.10.tar.xzcd  gzip-1.10

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

./configure --prefix=/toolsmake -j8make install

3.返回sources目录并删除解压目录

cd $LFS/sources/rm -rf gzip-1.10

第5.27章节

编译安装make包

1.解压并进入make包目录

tar -xvf make-4.2.1.tar.bz2cd make-4.2.1

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

sed -i '211,217 d; 219,229 d; 232 d' glob/glob.c./configure --prefix=/tools --without-guilemake -j8make install

3.返回sources目录并删除解压目录

cd $LFS/sources/rm -rf make-4.2.1

第5.28章节

编译安装patch包

1.解压并进入patch包

tar -xvf patch-2.7.6.tar.xzcd patch-2.7.6

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

./configure --prefix=/toolsmake -j8make install

3.返回sources目录并删除解压目录

cd $LFS/sources/rm -rf patch-2.7.6

第5.29章节

编译安装perl包

1.解压并进入perl包目录

tar -xvf perl-5.28.1.tar.xzcd perl-5.28.1

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

sh Configure -des -Dprefix=/tools -Dlibs=-lm -Uloclibpth -Ulocincpthmake -j8cp -v perl cpan/podlators/scripts/pod2man /tools/binmkdir -pv /tools/lib/perl5/5.28.1cp -Rv lib/* /tools/lib/perl5/5.28.1

3.返回sources目录并删除解压目录

cd $LFS/sources/rm -rf perl-5.28.1

第5.30章节

编译安装python包

1.解压并进入python包目录

tar -xvf Python-3.7.2.tar.xzcd Python-3.7.2

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

sed -i '/def add_multiarch_paths/a \        return' setup.py./configure --prefix=/tools --without-ensurepipmake -j8make install

3.返回sources目录并删除解压目录

cd $LFS/sources/rm -rf Python-3.7.2

第5.31章节

编译安装sed包

1.解压并进入sed包目录

tar -xvf sed-4.7.tar.xzcd sed-4.7

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

./configure --prefix=/toolsmake -j8make install

3.返回sources目录并删除解压目录

cd $LFS/sources/rm -rf sed-4.7

第5.32章节

编译安装tar包

1.解压并进入tar包目录

tar -xvf tar-1.31.tar.xzcd tar-1.31

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

./configure --prefix=/toolsmake -j8make install

3.返回sources目录并删除解压目录

cd $LFS/sources/rm -rf tar-1.31

第5.33章节

编译安装texinfo包

1.解压并进入texinfo包目录

tar -xvf texinfo-6.5.tar.xzcd texinfo-6.5

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

./configure --prefix=/toolsmake -j8make install

3.返回sources目录并删除解压目录

cd $LFS/sources/rm -rf texinfo-6.5

第5.34章节

编译安装xz包

1.解压并进入xz包目录

tar -xvf xz-5.2.4.tar.xzcd xz-5.2.4

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

./configure --prefix=/toolsmake -j8make install

3.返回sources目录并删除解压目录

cd $LFS/sources/rm -rf xz-5.2.4

退出lfs用户,进入root用户

exit

第5.35章节

删除没有用的链接及文档(可选)

1.删除调试符号

strip --strip-debug /tools/lib/*/usr/bin/strip --strip-unneeded /tools/{,s}bin/*

2.删除不需要的文件及文档

rm -rf /tools/{,share}/{
info,man,doc}
find /tools/{lib,libexec} -name \*.la -delete

第5.36章节

改变文件所有权

1.将文件的所有权限改为root

chown -R root:root $LFS/tools

此时删除创建的lfs用户及用户组

1.运行以下命令删除用户和用户组

userdel -r lfs

第6.2章节

创建虚拟内核文件系统

mkdir -pv $LFS/{dev,proc,sys,run}mknod -m 600 $LFS/dev/console c 5 1mknod -m 666 $LFS/dev/null c 1 3mount -v --bind /dev $LFS/devmount -vt devpts devpts $LFS/dev/pts -o gid=5,mode=620mount -vt proc proc $LFS/procmount -vt sysfs sysfs $LFS/sysmount -vt tmpfs tmpfs $LFS/runif [ -h $LFS/dev/shm ]; then  mkdir -pv $LFS/$(readlink $LFS/dev/shm)fi

第6.4章节

进入chroot环境

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

第6.5章节

创建lfs系统的目录结构

mkdir -pv /{bin,boot,etc/{opt,sysconfig},home,lib/firmware,mnt,opt}mkdir -pv /{media/{floppy,cdrom},sbin,srv,var}install -dv -m 0750 /rootinstall -dv -m 1777 /tmp /var/tmpmkdir -pv /usr/{,local/}{bin,include,lib,sbin,src}mkdir -pv /usr/{,local/}share/{color,dict,doc,info,locale,man}mkdir -v  /usr/{,local/}share/{misc,terminfo,zoneinfo}mkdir -v  /usr/libexecmkdir -pv /usr/{,local/}share/man/man{
1..8}case $(uname -m) in x86_64) mkdir -v /lib64 ;;esacmkdir -v /var/{log,mail,spool}ln -sv /run /var/runln -sv /run/lock /var/lockmkdir -pv /var/{opt,cache,lib/{color,misc,locate},local}

第6.6章节

创建基本文件和符号

ln -sv /tools/bin/{bash,cat,chmod,dd,echo,ln,mkdir,pwd,rm,stty,touch} /binln -sv /tools/bin/{
env,install,perl,printf} /usr/binln -sv /tools/lib/libgcc_s.so{,.1} /usr/libln -sv /tools/lib/libstdc++.{a,so{,.6}} /usr/libinstall -vdm755 /usr/lib/pkgconfigln -sv bash /bin/sh
ln -sv /proc/self/mounts /etc/mtab
cat > /etc/passwd << "EOF"root:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/dev/null:/bin/falsedaemon:x:6:6:Daemon User:/dev/null:/bin/falsemessagebus:x:18:18:D-Bus Message Daemon User:/var/run/dbus:/bin/falsenobody:x:99:99:Unprivileged User:/dev/null:/bin/falseEOF
cat > /etc/group << "EOF"root:x:0:bin:x:1:daemonsys:x:2:kmem:x:3:tape:x:4:tty:x:5:daemon:x:6:floppy:x:7:disk:x:8:lp:x:9:dialout:x:10:audio:x:11:video:x:12:utmp:x:13:usb:x:14:cdrom:x:15:adm:x:16:messagebus:x:18:systemd-journal:x:23:input:x:24:mail:x:34:nogroup:x:99:users:x:999:EOF

删除我没有名字的提示

exec /tools/bin/bash --login +h

创建登录日志文件

touch /var/log/{btmp,lastlog,faillog,wtmp}chgrp -v utmp /var/log/lastlogchmod -v 664  /var/log/lastlogchmod -v 600  /var/log/btmp

lfs(systemv版本)学习笔记-第3页 的地址

转载于:https://www.cnblogs.com/renren-study-notes/p/10199381.html

你可能感兴趣的文章
stap-prep 需要安装那些内核符号
查看>>
转载:ASP.NET Core 在 JSON 文件中配置依赖注入
查看>>
socket初识
查看>>
磁盘测试工具
查看>>
代码变量、函数命名神奇网站
查看>>
redis cli命令
查看>>
Problem B: 占点游戏
查看>>
python常用模块之sys, os, random
查看>>
HDU 2548 A strange lift
查看>>
Linux服务器在外地,如何用eclipse连接hdfs
查看>>
react双组件传值和传参
查看>>
BNU29140——Taiko taiko——————【概率题、规律题】
查看>>
[Kaggle] Sentiment Analysis on Movie Reviews
查看>>
价值观
查看>>
mongodb命令----批量更改文档字段名
查看>>
CentOS 简单命令
查看>>
使用&nbsp;SharedPreferences 分类: Andro...
查看>>
TLA+(待续...)
查看>>
题解: [GXOI/GZOI2019]与或和
查看>>
MacOS copy图标shell脚本
查看>>