天天看點

重走LFS之路:(一) 環境準備重走LFS之路:(一) 環境準備

自從大學二年級的寒假沒日沒夜地用了整整兩個月的時間編譯了lfs之後,就再也沒做過。這兩天在linux中國的微信公衆号上看到lfs都更新到7.7了,故而覺得是時候重新再編譯一遍的時候了。

誠然lfs是linux學習和深入了解的終南捷徑,每個真心希望了解linux的人都建議去做一遍lfs,因為每做一次就會獲得新的知識,對linux有更多更深入的了解。

重走LFS之路:(一) 環境準備重走LFS之路:(一) 環境準備

(題圖來自: techradar.com)

此時我把debian更新到了最新,并且為了使用顯示卡驅動讓它能夠在我的顯示器上全屏顯示,就用tasksel裝上了debian desktop environment。

重走LFS之路:(一) 環境準備重走LFS之路:(一) 環境準備

1-tasksel-debiandesktopenv

我在自己的home目錄中建立了一個目錄lfs,用于整個工程的存儲。這時候我在~/lfs/中建立了一個checkscript目錄,用于存儲事前的環境檢查腳本。

我們來編寫第一個檢查腳本,這個腳本會檢查各個需要的工具及核心版本号,看看是否符合lfs7.7的清單要求,如果沒有,會報not found。

<code>cd ~/lfs/checkscript</code>

<code></code>

<code>vi check_env.sh</code>

<code>#/bin/sh</code>

<code>export lc_all=c</code>

<code>bash –version | head -n1 | cut -d” ” -f2-4</code>

<code>echo “/bin/sh -&gt; `readlink -f /bin/sh`”</code>

<code>echo -n “binutils: “; ld –version | head -n1 | cut -d” ” -f3-</code>

<code>bison –version | head -n1</code>

<code>if [ -h /usr/bin/yacc ]; then</code>

<code>echo “/usr/bin/yacc -&gt; `readlink -f /usr/bin/yacc`”;</code>

<code>elif [ -x /usr/bin/yacc ]; then</code>

<code>echo yacc is `/usr/bin/yacc –version | head -n1`</code>

<code>else</code>

<code>echo “yacc not found”</code>

<code>fi</code>

<code>bzip2 –version 2&gt;&amp;1 &lt; /dev/null | head -n1 | cut -d” ” -f1,6-</code>

<code>echo -n “coreutils: “; chown –version | head -n1 | cut -d”)” -f2</code>

<code>diff –version | head -n1</code>

<code>find –version | head -n1</code>

<code>gawk –version | head -n1</code>

<code>if [ -h /usr/bin/awk ]; then</code>

<code>echo “/usr/bin/awk -&gt; `readlink -f /usr/bin/awk`”;</code>

<code>elif [ -x /usr/bin/awk ]; then</code>

<code>echo yacc is `/usr/bin/awk –version | head -n1`</code>

<code>echo “awk not found”</code>

<code>gcc –version | head -n1</code>

<code>g++ –version | head -n1</code>

<code>ldd –version | head -n1 | cut -d” ” -f2- # glibc version</code>

<code>grep –version | head -n1</code>

<code>gzip –version | head -n1</code>

<code>cat /proc/version</code>

<code>m4 –version | head -n1</code>

<code>make –version | head -n1</code>

<code>patch –version | head -n1</code>

<code>echo perl `perl -v:version`</code>

<code>sed –version | head -n1</code>

<code>tar –version | head -n1</code>

<code>makeinfo –version | head -n1</code>

<code>xz –version | head -n1</code>

<code>echo ‘main(){}’ &gt; dummy.c &amp;&amp; g++ -o dummy dummy.c</code>

<code>if [ -x dummy ]; then</code>

<code>echo “g++ compilation ok”;</code>

<code>echo “g++ compilation failed”;</code>

<code>rm -f dummy.c dummy</code>

重走LFS之路:(一) 環境準備重走LFS之路:(一) 環境準備

2-checkscript-check_env.sh

此時的腳本是不能直接執行的,需要加執行權限,也就是x權限

<code>chmod +x check_env.sh</code>

現在可以執行腳本了

重走LFS之路:(一) 環境準備重走LFS之路:(一) 環境準備

3-checkscript-check_env.run

從檢查結果中可以看到,我的debian太幹淨了,缺了好幾樣東西,bison gawk g++,是以我用aptitude裝上他們就好了。

重走LFS之路:(一) 環境準備重走LFS之路:(一) 環境準備

4-checkscript-install

重走LFS之路:(一) 環境準備重走LFS之路:(一) 環境準備

5-checkscript-check_env-ok

此時環境檢查沒有報錯資訊了,需要的工具也已經正确顯示了版本号。

下面檢查需要用到的庫,一共有三個,gmp, mpfr和mpc

<code>vi check_lib.sh</code>

<code>#!/bin/bash</code>

<code>for lib in lib{gmp,mpfr,mpc}.la; do</code>

<code>echo $lib: $(</code>

<code>if find /usr/lib* -name $lib | grep -q $lib; then</code>

<code>:;</code>

<code>echo not;</code>

<code>) found</code>

<code>done</code>

<code>unset lib</code>

重走LFS之路:(一) 環境準備重走LFS之路:(一) 環境準備

6-checkscript-check_lib.sh

重走LFS之路:(一) 環境準備重走LFS之路:(一) 環境準備

7-checkscript-check_lib.run

從檢查結果來看,三個庫目前都不具備,不過沒關系,現在還用不到這三個貨,先把腳本寫好。

原文釋出時間:2015-04-02

本文來自雲栖合作夥伴“linux中國”

繼續閱讀