一. 准備工作
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