当前位置: 首页 > 工具软件 > Scratch View > 使用案例 >

linux from scratch / 从零开始生成linux

秦鸿羽
2023-12-01

文章背景:
http://www.linuxfromscratch.org/lfs/view/stable/index.html

创建分区
parted /dev/sda mkpart primary ext4 50G 100%
参考:
https://blog.csdn.net/songpeng26/article/details/105180694

格式化分区
mkfs /dev/sda3 -t ext4
参考:
https://blog.csdn.net/songpeng26/article/details/105180694

环境变量
export LFS=/mnt/lfs
echo $LFS

挂载
mkdir -pv $LFS
mount -v -t ext4 /dev/sda3 $LFS
注意:
必须将分区/dev/sda3挂载到目录数上才能访问。
即 能访问的是目录树 单独的设备只要不在树上 就无法访问。

检查host软件:
新建version-check.sh,加入下面内容,运行检查host系统的软件版本:

#!/bin/bash
# Simple script to list version numbers of critical development tools
export LC_ALL=C
bash --version | head -n1 | cut -d" " -f2-4
MYSH=$(readlink -f /bin/sh)
echo "/bin/sh -> $MYSH"
echo $MYSH | grep -q bash || echo "ERROR: /bin/sh does not point to bash"
unset MYSH
echo -n "Binutils: "; ld --version | head -n1 | cut -d" " -f3-
bison --version | head -n1
if [ -h /usr/bin/yacc ]; then
  echo "/usr/bin/yacc -> `readlink -f /usr/bin/yacc`";
elif [ -x /usr/bin/yacc ]; then
  echo yacc is `/usr/bin/yacc --version | head -n1`
else
  echo "yacc not found"
fi
bzip2 --version 2>&1 < /dev/null | head -n1 | cut -d" " -f1,6-
echo -n "Coreutils: "; chown --version | head -n1 | cut -d")" -f2
diff --version | head -n1
find --version | head -n1
gawk --version | head -n1
if [ -h /usr/bin/awk ]; then
  echo "/usr/bin/awk -> `readlink -f /usr/bin/awk`";
elif [ -x /usr/bin/awk ]; then
  echo awk is `/usr/bin/awk --version | head -n1`
else
  echo "awk not found"
fi
gcc --version | head -n1
g++ --version | head -n1
ldd --version | head -n1 | cut -d" " -f2-  # glibc version
grep --version | head -n1
gzip --version | head -n1
cat /proc/version
m4 --version | head -n1
make --version | head -n1
patch --version | head -n1
echo Perl `perl -V:version`
python3 --version
sed --version | head -n1
tar --version | head -n1
makeinfo --version | head -n1  # texinfo version
xz --version | head -n1
if [ -x dummy ]
  then echo "g++ compilation OK";
else echo "g++ compilation failed"; fi 
rm -f dummy.c dummy

下载所有需要包
http://www.linuxfromscratch.org/lfs/downloads/9.1/wget-list
or
http://www.linuxfromscratch.org/lfs/view/stable/chapter03/packages.html
链接:https://pan.baidu.com/s/1b0ga6oUl30bcKuqGFbcewQ  密码:sbz3

下载包校验文件
http://www.linuxfromscratch.org/lfs/downloads/9.1/md5sums
or
http://www.linuxfromscratch.org/lfs/view/stable/md5sums
校验:
md5sum -c md5sums

5.4 编译binutils
…/configure --prefix=/tools
–with-sysroot=KaTeX parse error: Undefined control sequence: \ at position 12: LFS \̲ ̲ --…LFS_TGT
–disable-nls
–disable-werror
计算时间:
time {
…/configure --prefix=/tools
–with-sysroot=KaTeX parse error: Undefined control sequence: \ at position 12: LFS \̲ ̲ --…LFS_TGT
–disable-nls
–disable-werror;
}

用命令过滤出binutils都生成了什么文件(我是在后面才想看的,所以需要过滤)

lfs@peng:/mnt/lfs/tools$ tree -aft --timefmt '%y%m%d %H:%M' -L 2 | grep '23:12'
|-- [200504 23:12]  ./share
|   |-- [200504 23:12]  ./share/man
|   `-- [200504 23:12]  ./share/info
|-- [200504 23:12]  ./bin
|   |-- [200504 23:12]  ./bin/x86_64-lfs-linux-gnu-addr2line
|   |-- [200504 23:12]  ./bin/x86_64-lfs-linux-gnu-ar
|   |-- [200504 23:12]  ./bin/x86_64-lfs-linux-gnu-as
|   |-- [200504 23:12]  ./bin/x86_64-lfs-linux-gnu-c++filt
|   |-- [200504 23:12]  ./bin/x86_64-lfs-linux-gnu-elfedit
|   |-- [200504 23:12]  ./bin/x86_64-lfs-linux-gnu-gprof
|   |-- [200504 23:12]  ./bin/x86_64-lfs-linux-gnu-nm
|   |-- [200504 23:12]  ./bin/x86_64-lfs-linux-gnu-objcopy
|   |-- [200504 23:12]  ./bin/x86_64-lfs-linux-gnu-objdump
|   |-- [200504 23:12]  ./bin/x86_64-lfs-linux-gnu-ranlib
|   |-- [200504 23:12]  ./bin/x86_64-lfs-linux-gnu-readelf
|   |-- [200504 23:12]  ./bin/x86_64-lfs-linux-gnu-size
|   |-- [200504 23:12]  ./bin/x86_64-lfs-linux-gnu-strings
|   |-- [200504 23:12]  ./bin/x86_64-lfs-linux-gnu-strip
|   |-- [200504 23:12]  ./bin/x86_64-lfs-linux-gnu-ld
|   `-- [200504 23:12]  ./bin/x86_64-lfs-linux-gnu-ld.bfd
`-- [200504 23:12]  ./x86_64-lfs-linux-gnu
    |-- [200504 23:12]  ./x86_64-lfs-linux-gnu/bin
    `-- [200504 23:12]  ./x86_64-lfs-linux-gnu/lib

根据结果网上搜索了下,这里可以查看binutils会产生的文件
https://manpages.debian.org/jessie/binutils/index.html
不过考虑到binutils是分段编译到,所以这个网址只能做参考。
按这个输出的内容,imho, 就是生成了 as ld 等,可以编译/链接出 gcc 和 g++的工具

5.5 编译gcc pass1
这里同样过滤出,gcc编译出的内容,可以看出由于加了--enable-languages=c,c++命令,这里只产生了gcc g++ c++ 几个命令

lfs@peng:/mnt/lfs/tools$ tree -aft --timefmt '%y%m%d %H:%M' -L 2 | grep 23:17  
|   |-- [200504 23:17]  ./share/man
|   `-- [200504 23:17]  ./share/info
|-- [200504 23:17]  ./include
|-- [200504 23:17]  ./bin
|   |-- [200504 23:17]  ./bin/x86_64-lfs-linux-gnu-c++
|   |-- [200504 23:17]  ./bin/x86_64-lfs-linux-gnu-g++
|   |-- [200504 23:17]  ./bin/x86_64-lfs-linux-gnu-gcov
|   |-- [200504 23:17]  ./bin/x86_64-lfs-linux-gnu-gcov-dump
|   |-- [200504 23:17]  ./bin/x86_64-lfs-linux-gnu-gcov-tool
|   |-- [200504 23:17]  ./bin/x86_64-lfs-linux-gnu-cpp
|   |-- [200504 23:17]  ./bin/x86_64-lfs-linux-gnu-gcc
|   |-- [200504 23:17]  ./bin/x86_64-lfs-linux-gnu-gcc-9.2.0
|   |-- [200504 23:17]  ./bin/x86_64-lfs-linux-gnu-gcc-ar
|   |-- [200504 23:17]  ./bin/x86_64-lfs-linux-gnu-gcc-nm
|   `-- [200504 23:17]  ./bin/x86_64-lfs-linux-gnu-gcc-ranlib
`-- [200504 23:17]  ./lib
    |-- [200504 23:17]  ./lib/libcc1.la
    |-- [200504 23:17]  ./lib/libcc1.so -> libcc1.so.0.0.0
    |-- [200504 23:17]  ./lib/libcc1.so.0 -> libcc1.so.0.0.0
    `-- [200504 23:17]  ./lib/libcc1.so.0.0.0

5.6 linux header 
用linux kernel 的包生成头文件,并copy到tools/include里

5.7 glibc:  it's GNU C library

lfs@peng:/mnt/lfs/tools$ tree -aft --timefmt '%y%m%d %H:%M' -L 2 | grep 23:4 
|   `-- [200504 23:41]  ./var/db
|-- [200503 23:46]  ./x86_64-pc-linux-gnu
|   |-- [200503 23:46]  ./x86_64-pc-linux-gnu/bin
|   `-- [200503 23:46]  ./x86_64-pc-linux-gnu/lib
|   |-- [200504 23:40]  ./share/info
|   `-- [200504 23:40]  ./share/locale
|-- [200504 23:40]  ./libexec
|   `-- [200504 23:40]  ./libexec/getconf
|-- [200504 23:41]  ./etc
|   `-- [200504 23:41]  ./etc/rpc
|-- [200504 23:41]  ./include
|   |-- [200503 23:46]  ./include/ansidecl.h
|   |-- [200503 23:46]  ./include/bfd.h
|   |-- [200503 23:46]  ./include/bfd_stdint.h
|   |-- [200503 23:46]  ./include/bfdlink.h
|   |-- [200503 23:46]  ./include/diagnostics.h
|   |-- [200503 23:46]  ./include/plugin-api.h
|   |-- [200503 23:46]  ./include/symcat.h
|   |-- [200503 23:46]  ./include/dis-asm.h
|   |-- [200503 23:46]  ./include/ctf-api.h
|   |-- [200503 23:46]  ./include/ctf.h
|   |-- [200504 23:40]  ./include/setjmp.h
|   |-- [200504 23:40]  ./include/signal.h
...................
|   |-- [200504 23:41]  ./include/rpc
|   |-- [200504 23:41]  ./include/lastlog.h
|   |-- [200504 23:41]  ./include/pty.h
|   |-- [200504 23:41]  ./include/utmp.h
|   |-- [200504 23:41]  ./include/utmpx.h
|   |-- [200504 23:41]  ./include/bits
|   |-- [200504 23:41]  ./include/elf.h
|   |-- [200504 23:41]  ./include/gnu
|   `-- [200504 23:41]  ./include/link.h
|-- [200504 23:41]  ./bin
|   |-- [200504 23:40]  ./bin/mtrace
|   |-- [200504 23:40]  ./bin/tzselect
|   |-- [200504 23:40]  ./bin/getconf
|   |-- [200504 23:40]  ./bin/catchsegv
|   |-- [200504 23:40]  ./bin/pcprofiledump
|   |-- [200504 23:40]  ./bin/xtrace
|   |-- [200504 23:41]  ./bin/getent
|   |-- [200504 23:41]  ./bin/makedb
|   |-- [200504 23:41]  ./bin/ldd
|   |-- [200504 23:41]  ./bin/pldd
|   |-- [200504 23:41]  ./bin/sotruss
|   `-- [200504 23:41]  ./bin/sprof
|-- [200504 23:41]  ./lib
|   |-- [200504 23:40]  ./lib/libm-2.31.a
|   |-- [200504 23:40]  ./lib/libm.a
|   |-- [200504 23:40]  ./lib/libdl-2.31.so
|   |-- [200504 23:40]  ./lib/libdl.a
|   |-- [200504 23:40]  ./lib/libdl.so -> libdl.so.2
|   |-- [200504 23:40]  ./lib/libdl.so.2 -> libdl-2.31.so
|   |-- [200504 23:40]  ./lib/libpthread-2.31.so
|   |-- [200504 23:40]  ./lib/libpthread.so -> libpthread.so.0
|   |-- [200504 23:40]  ./lib/libpthread.so.0 -> libpthread-2.31.so
|   |-- [200504 23:40]  ./lib/libmcheck.a
|   |-- [200504 23:40]  ./lib/libmemusage.so
|   |-- [200504 23:40]  ./lib/libpthread.a
|   |-- [200504 23:40]  ./lib/libg.a
|   |-- [200504 23:40]  ./lib/libc.a
|   |-- [200504 23:40]  ./lib/libc.so.6 -> libc-2.31.so
|   |-- [200504 23:40]  ./lib/libc_nonshared.a
|   |-- [200504 23:40]  ./lib/librt-2.31.so
|   |-- [200504 23:40]  ./lib/librt.so -> librt.so.1
|   |-- [200504 23:40]  ./lib/librt.so.1 -> librt-2.31.so
|   |-- [200504 23:40]  ./lib/librt.a
|   |-- [200504 23:40]  ./lib/libSegFault.so
|   |-- [200504 23:40]  ./lib/libpcprofile.so
|   |-- [200504 23:40]  ./lib/libmvec-2.31.so
|   |-- [200504 23:40]  ./lib/libmvec.so -> libmvec.so.1
|   |-- [200504 23:40]  ./lib/libmvec.so.1 -> libmvec-2.31.so
|   |-- [200504 23:40]  ./lib/libmvec.a
|   |-- [200504 23:40]  ./lib/libcrypt-2.31.so
|   |-- [200504 23:40]  ./lib/libcrypt.so -> libcrypt.so.1
|   |-- [200504 23:40]  ./lib/libcrypt.so.1 -> libcrypt-2.31.so
|   |-- [200504 23:40]  ./lib/libcrypt.a
|   |-- [200504 23:41]  ./lib/libthread_db-1.0.so
|   |-- [200504 23:41]  ./lib/libthread_db.so -> libthread_db.so.1
|   |-- [200504 23:41]  ./lib/libthread_db.so.1 -> libthread_db-1.0.so
|   |-- [200504 23:41]  ./lib/libresolv-2.31.so
|   |-- [200504 23:41]  ./lib/libresolv.so -> libresolv.so.2
|   |-- [200504 23:41]  ./lib/libresolv.so.2 -> libresolv-2.31.so
|   |-- [200504 23:41]  ./lib/libnss_dns-2.31.so
|   |-- [200504 23:41]  ./lib/libnss_dns.so -> libnss_dns.so.2
|   |-- [200504 23:41]  ./lib/libnss_dns.so.2 -> libnss_dns-2.31.so
|   |-- [200504 23:41]  ./lib/libanl-2.31.so
|   |-- [200504 23:41]  ./lib/libanl.so -> libanl.so.1
|   |-- [200504 23:41]  ./lib/libanl.so.1 -> libanl-2.31.so
|   |-- [200504 23:41]  ./lib/libanl.a
|   |-- [200504 23:41]  ./lib/libresolv.a
|   |-- [200504 23:41]  ./lib/libnss_files-2.31.so
|   |-- [200504 23:41]  ./lib/libnss_files.so -> libnss_files.so.2
|   |-- [200504 23:41]  ./lib/libnss_files.so.2 -> libnss_files-2.31.so
|   |-- [200504 23:41]  ./lib/libnss_db-2.31.so
|   |-- [200504 23:41]  ./lib/libnss_db.so -> libnss_db.so.2
|   |-- [200504 23:41]  ./lib/libnss_db.so.2 -> libnss_db-2.31.so
|   |-- [200504 23:41]  ./lib/libnss_compat-2.31.so
|   |-- [200504 23:41]  ./lib/libnss_compat.so -> libnss_compat.so.2
|   |-- [200504 23:41]  ./lib/libnss_compat.so.2 -> libnss_compat-2.31.so
|   |-- [200504 23:41]  ./lib/libnss_hesiod-2.31.so
|   |-- [200504 23:41]  ./lib/libnss_hesiod.so -> libnss_hesiod.so.2
|   |-- [200504 23:41]  ./lib/libnss_hesiod.so.2 -> libnss_hesiod-2.31.so
|   |-- [200504 23:41]  ./lib/libnsl-2.31.so
|   |-- [200504 23:41]  ./lib/libnsl.so.1 -> libnsl-2.31.so
|   |-- [200504 23:41]  ./lib/libutil-2.31.so
|   |-- [200504 23:41]  ./lib/libutil.so -> libutil.so.1
|   |-- [200504 23:41]  ./lib/libutil.so.1 -> libutil-2.31.so
|   |-- [200504 23:41]  ./lib/libutil.a
|   |-- [200504 23:41]  ./lib/audit
|   |-- [200504 23:41]  ./lib/ld-2.31.so
|   |-- [200504 23:41]  ./lib/ld-linux-x86-64.so.2 -> ld-2.31.so
|   `-- [200504 23:41]  ./lib/libc-2.31.so
`-- [200504 23:41]  ./sbin
    |-- [200504 23:40]  ./sbin/zdump
    |-- [200504 23:40]  ./sbin/zic
    |-- [200504 23:41]  ./sbin/nscd
    |-- [200504 23:41]  ./sbin/sln
    `-- [200504 23:41]  ./sbin/ldconfig

5.8 libstdc++: it's standard c++ library from gcc

基本上在tools/$LFS_TGT/include/c++/9.2.0里面生成了一堆 .h .hpp文件 还有程序,然后在lib里生成了libstdc++.so库文件

|                   |   |-- [200504 23:51]  ./x86_64-lfs-linux-gnu/include/c++/9.2.0/x86_64-lfs-linux-gnu/bits/c++locale.h
|                   |   |-- [200504 23:51]  ./x86_64-lfs-linux-gnu/include/c++/9.2.0/x86_64-lfs-linux-gnu/bits/cpu_defines.h
|                   |   |-- [200504 23:51]  ./x86_64-lfs-linux-gnu/include/c++/9.2.0/x86_64-lfs-linux-gnu/bits/ctype_base.h
|                   |   |-- [200504 23:51]  ./x86_64-lfs-linux-gnu/include/c++/9.2.0/x86_64-lfs-linux-gnu/bits/ctype_inline.h
|                   |   |-- [200504 23:51]  ./x86_64-lfs-linux-gnu/include/c++/9.2.0/x86_64-lfs-linux-gnu/bits/cxxabi_tweaks.h
|                   |   |-- [200504 23:51]  ./x86_64-lfs-linux-gnu/include/c++/9.2.0/x86_64-lfs-linux-gnu/bits/error_constants.h
|                   |   |-- [200504 23:51]  ./x86_64-lfs-linux-gnu/include/c++/9.2.0/x86_64-lfs-linux-gnu/bits/extc++.h
|                   |   |-- [200504 23:51]  ./x86_64-lfs-linux-gnu/include/c++/9.2.0/x86_64-lfs-linux-gnu/bits/gthr-default.h
|                   |   |-- [200504 23:51]  ./x86_64-lfs-linux-gnu/include/c++/9.2.0/x86_64-lfs-linux-gnu/bits/gthr-posix.h
|                   |   |-- [200504 23:51]  ./x86_64-lfs-linux-gnu/include/c++/9.2.0/x86_64-lfs-linux-gnu/bits/gthr-single.h
|                   |   |-- [200504 23:51]  ./x86_64-lfs-linux-gnu/include/c++/9.2.0/x86_64-lfs-linux-gnu/bits/gthr.h
|                   |   |-- [200504 23:51]  ./x86_64-lfs-linux-gnu/include/c++/9.2.0/x86_64-lfs-linux-gnu/bits/messages_members.h
|                   |   |-- [200504 23:51]  ./x86_64-lfs-linux-gnu/include/c++/9.2.0/x86_64-lfs-linux-gnu/bits/opt_random.h
|                   |   |-- [200504 23:51]  ./x86_64-lfs-linux-gnu/include/c++/9.2.0/x86_64-lfs-linux-gnu/bits/os_defines.h
|                   |   |-- [200504 23:51]  ./x86_64-lfs-linux-gnu/include/c++/9.2.0/x86_64-lfs-linux-gnu/bits/stdc++.h
|                   |   |-- [200504 23:51]  ./x86_64-lfs-linux-gnu/include/c++/9.2.0/x86_64-lfs-linux-gnu/bits/stdtr1c++.h
|                   |   `-- [200504 23:51]  ./x86_64-lfs-linux-gnu/include/c++/9.2.0/x86_64-lfs-linux-gnu/bits/time_members.h
|                   `-- [200504 23:51]  ./x86_64-lfs-linux-gnu/include/c++/9.2.0/x86_64-lfs-linux-gnu/ext
|                       `-- [200504 23:51]  ./x86_64-lfs-linux-gnu/include/c++/9.2.0/x86_64-lfs-linux-gnu/ext/opt_random.h
|-- [200504 23:51]  ./lib
|   |-- [200504 23:51]  ./lib/libstdc++.la
|   |-- [200504 23:51]  ./lib/libstdc++.so -> libstdc++.so.6.0.27
|   |-- [200504 23:51]  ./lib/libstdc++.so.6 -> libstdc++.so.6.0.27
|   |-- [200504 23:51]  ./lib/libstdc++.so.6.0.27
|   |-- [200504 23:51]  ./lib/libstdc++fs.a
|   |-- [200504 23:51]  ./lib/libstdc++fs.la
|   |-- [200504 23:51]  ./lib/libsupc++.a
|   |-- [200504 23:51]  ./lib/libsupc++.la
|   |-- [200504 23:51]  ./lib/libstdc++.a
|   `-- [200504 23:51]  ./lib/libstdc++.so.6.0.27-gdb.py
`-- [200504 23:51]  ./share
    `-- [200504 23:51]  ./share/gcc-9.2.0
        `-- [200504 23:51]  ./share/gcc-9.2.0/python
            `-- [200504 23:51]  ./share/gcc-9.2.0/python/libstdcxx
                |-- [200504 23:51]  ./share/gcc-9.2.0/python/libstdcxx/__init__.py
                `-- [200504 23:51]  ./share/gcc-9.2.0/python/libstdcxx/v6
                    |-- [200504 23:51]  ./share/gcc-9.2.0/python/libstdcxx/v6/__init__.py
                    |-- [200504 23:51]  ./share/gcc-9.2.0/python/libstdcxx/v6/printers.py
                    `-- [200504 23:51]  ./share/gcc-9.2.0/python/libstdcxx/v6/xmethods.py
 

5.9 binutils pass2: ??? , remove old ld , make new ld with normal search path for next chapter
照惯例过滤了下,看生成了什么文件。
看起来像是把原来binutils生成的工具链,用cross compile工具
CC=$LFS_TGT-gcc
AR=$LFS_TGT-ar
RANLIB=$LFS_TGT-ranlib
重新生成了一遍。

lfs@peng:/mnt/lfs/tools$ tree -aft --timefmt '%m%d %H:%M' | grep '13:'
|   |   `-- [0505 13:05]  ./share/man/man1
|   |       |-- [0505 13:05]  ./share/man/man1/addr2line.1
.......
|   |       `-- [0505 13:05]  ./share/man/man1/ld.1
|   `-- [0505 13:05]  ./share/info
|       |-- [0505 13:04]  ./share/info/bfd.info
|       |-- [0505 13:05]  ./share/info/as.info
|       |-- [0505 13:05]  ./share/info/binutils.info
|       |-- [0505 13:05]  ./share/info/gprof.info
|       `-- [0505 13:05]  ./share/info/ld.info
|-- [0505 13:05]  ./x86_64-pc-linux-gnu
|   |-- [0505 13:05]  ./x86_64-pc-linux-gnu/bin
|   |   |-- [0505 13:05]  ./x86_64-pc-linux-gnu/bin/ar
|   |   |-- [0505 13:05]  ./x86_64-pc-linux-gnu/bin/nm
|   |   |-- [0505 13:05]  ./x86_64-pc-linux-gnu/bin/objcopy
|   |   |-- [0505 13:05]  ./x86_64-pc-linux-gnu/bin/objdump
|   |   |-- [0505 13:05]  ./x86_64-pc-linux-gnu/bin/ranlib
|   |   |-- [0505 13:05]  ./x86_64-pc-linux-gnu/bin/readelf
|   |   |-- [0505 13:05]  ./x86_64-pc-linux-gnu/bin/strip
|   |   |-- [0505 13:05]  ./x86_64-pc-linux-gnu/bin/as
|   |   |-- [0505 13:05]  ./x86_64-pc-linux-gnu/bin/ld
|   |   `-- [0505 13:05]  ./x86_64-pc-linux-gnu/bin/ld.bfd
|   `-- [0505 13:05]  ./x86_64-pc-linux-gnu/lib
|       `-- [0505 13:05]  ./x86_64-pc-linux-gnu/lib/ldscripts
|           |-- [0505 13:05]  ./x86_64-pc-linux-gnu/lib/ldscripts/elf32_x86_64.x
......
|           |-- [0505 13:05]  ./x86_64-pc-linux-gnu/lib/ldscripts/elf_x86_64.xu
|           |-- [0505 13:05]  ./x86_64-pc-linux-gnu/lib/ldscripts/elf_x86_64.xw
|           `-- [0505 13:05]  ./x86_64-pc-linux-gnu/lib/ldscripts/elf_x86_64.xwe
|-- [0505 13:05]  ./include
|   |-- [0505 13:04]  ./include/ansidecl.h
|   |-- [0505 13:04]  ./include/bfd.h
|   |-- [0505 13:04]  ./include/bfd_stdint.h
|   |-- [0505 13:04]  ./include/bfdlink.h
|   |-- [0505 13:04]  ./include/diagnostics.h
|   |-- [0505 13:04]  ./include/plugin-api.h
|   |-- [0505 13:04]  ./include/symcat.h
|   |-- [0505 13:05]  ./include/dis-asm.h
|   |-- [0505 13:05]  ./include/ctf-api.h
|   `-- [0505 13:05]  ./include/ctf.h
|-- [0505 13:05]  ./lib
|   |-- [0505 13:04]  ./lib/libbfd.la
|   |-- [0505 13:05]  ./lib/libbfd.a
|   |-- [0505 13:05]  ./lib/libopcodes.a
|   |-- [0505 13:05]  ./lib/libopcodes.la
|   |-- [0505 13:05]  ./lib/libctf-nobfd.a
|   |-- [0505 13:05]  ./lib/libctf-nobfd.la
|   |-- [0505 13:05]  ./lib/libctf.a
|   `-- [0505 13:05]  ./lib/libctf.la
`-- [0505 13:05]  ./bin
    |-- [0505 13:05]  ./bin/addr2line
    |-- [0505 13:05]  ./bin/ar
    |-- [0505 13:05]  ./bin/c++filt
    |-- [0505 13:05]  ./bin/elfedit
    |-- [0505 13:05]  ./bin/nm
    |-- [0505 13:05]  ./bin/objcopy
    |-- [0505 13:05]  ./bin/objdump
    |-- [0505 13:05]  ./bin/ranlib
    |-- [0505 13:05]  ./bin/readelf
    |-- [0505 13:05]  ./bin/size
    |-- [0505 13:05]  ./bin/strings
    |-- [0505 13:05]  ./bin/strip
    |-- [0505 13:05]  ./bin/as
    |-- [0505 13:05]  ./bin/gprof
    |-- [0505 13:05]  ./bin/ld
    |-- [0505 13:05]  ./bin/ld.bfd
    `-- [0505 13:05]  ./bin/ld-new

对比洗面原来bin里面的工具:
这些新生成的工具,貌似是为了下一章的新环境准备的。

|-- [200504 23:12]  ./bin
|   |-- [200504 23:12]  ./bin/x86_64-lfs-linux-gnu-addr2line
|   |-- [200504 23:12]  ./bin/x86_64-lfs-linux-gnu-ar
|   |-- [200504 23:12]  ./bin/x86_64-lfs-linux-gnu-as
|   |-- [200504 23:12]  ./bin/x86_64-lfs-linux-gnu-c++filt
|   |-- [200504 23:12]  ./bin/x86_64-lfs-linux-gnu-elfedit
|   |-- [200504 23:12]  ./bin/x86_64-lfs-linux-gnu-gprof
|   |-- [200504 23:12]  ./bin/x86_64-lfs-linux-gnu-nm
|   |-- [200504 23:12]  ./bin/x86_64-lfs-linux-gnu-objcopy
|   |-- [200504 23:12]  ./bin/x86_64-lfs-linux-gnu-objdump
|   |-- [200504 23:12]  ./bin/x86_64-lfs-linux-gnu-ranlib
|   |-- [200504 23:12]  ./bin/x86_64-lfs-linux-gnu-readelf
|   |-- [200504 23:12]  ./bin/x86_64-lfs-linux-gnu-size
|   |-- [200504 23:12]  ./bin/x86_64-lfs-linux-gnu-strings
|   |-- [200504 23:12]  ./bin/x86_64-lfs-linux-gnu-strip
|   |-- [200504 23:12]  ./bin/x86_64-lfs-linux-gnu-ld
|   `-- [200504 23:12]  ./bin/x86_64-lfs-linux-gnu-ld.bfd

 

 

 

 

 

 

 

 

 

 类似资料: