Linux From Scratch(從零開始構建Linux系統,簡稱LFS)- Version 7.7,scratchlfs
Linux From Scratch(從零開始構建Linux系統,簡稱LFS)- Version 7.7,scratchlfs
一. 准備工作
1. 需要一個Linux宿主系統,例如早先版本的 LFS,Ubuntu/Fedora,SuSE 或者是在你的架構上可以運行的其它發行版
二. LFS目標架構
LFS主要支持 AMD/Intel 的 x86(32 位)和 x86_64(64 位) 的目標架構。另外,做一些更改可以讓LFS 順利地在 Power PC 和
ARM CPU 上運行。
假如按照本文的默認方式構建,那麼你將得到一個“純” 64 位系統————這意味著你僅能夠執行64 位的程序。有一些異常老舊的
包無法在“純” 64位系統上構建,或者是需要專門的編譯指令。通常出現這樣的問題是因為這些包包含有一些與32 位系統緊密相關的
匯編指令。大多數問題都有解決方案,但可能需要特別的方法或者是補丁。
三. 宿主系統需求
確保宿主系統已經包含了所有合適的軟件版本,具有了編譯程序的能力,這對於一個現代的Linux發行版系統不是一個問題。
你需要運行以下指令:

![]()
cat > version-check.sh << "EOF"
#!/bin/bash
# Simple script to list version numbers of critical development tools
export LC_ALL=C
bash --version | head -n1 | cut -d" " -f2-4
echo "/bin/sh -> `readlink -f /bin/sh`"
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 yacc 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`
sed --version | head -n1
tar --version | head -n1
makeinfo --version | head -n1
xz --version | head -n1
echo 'main(){}' > dummy.c && g++ -o dummy dummy.c
if [ -x dummy ]
then echo "g++ compilation OK";
else echo "g++ compilation failed"; fi
rm -f dummy.c dummy
EOF
bash version-check.sh
View Code
同時,還請進行庫文件的一致性檢查,這些文件應該要麼都在或者是都缺失,而不應該只有一兩個。

![]()
cat > library-check.sh << "EOF"
#!/bin/bash
for lib in lib{gmp,mpfr,mpc}.la; do
echo $lib: $(if find /usr/lib* -name $lib|
grep -q $lib;then :;else echo not;fi) found
done
unset lib
EOF
bash library-check.sh
View Code
http://xxxxxx/Linuxjc/1140762.html TechArticle