歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 使用LFS打造自己的Linux心得體會

使用LFS打造自己的Linux心得體會

日期:2017/2/28 16:56:08   编辑:Linux教程

  最早看到LFS這個名詞是在3年前,那時我還在搞.NET,只是簡單的查了一下LFS的含義,以為是Linux的又一個發行版,就沒在意。最近突然想到了它,就仔細讀了一下它的手冊,才發現它只是一個手冊,指導用戶如何從頭創建一個Linux系統。於是我就照著手冊開始做了。

  說是從頭開始,其實還是要有一些基本環境的,比如你至少要有一套Linux下的編譯環境glibc,gcc等不能少,因為有些安裝包的Configure腳本需要用到gawk,grep等工具,所以在開始整個任務前也要檢查下這些工具。好在LFS的手冊最開始部分已經列出了所需的所有工具,用戶只需要看看自己的環境下面有沒有就行了。如果是使用LFS的LiveCD,它裡面已經包含了這些基本工具,也就不需要再安裝其它東西。我在一開始是跳開了這一章,結果在後面的某次編譯時,出了一個不明的BUG,在網上查了好一會,才發現是少了gawk這個工具,後來看到這一章,後悔自己沒耐心全看完。所以,如果是第一次用LFS時一定要按部就班的來,可以省掉後面很多麻煩,但麻煩也是相對的,如果不出現這些麻煩,也就不會完全理解為什麼需要這些工具。

  詳細的步驟我就不說了,LFS的手冊中已經寫得很清楚了,這裡主要說一下我在編譯過程中遇到的一些問題,及解決辦法。

  第一個問題出現在編譯GCC的時候,其中有個選項--with-local-prefix=/tools,其實在這個時候/mnt/lfs/tools/include目錄中根本沒有glibc的頭文件以及linux kernel的頭文件,整個手冊中也沒有交代這些include文件是什麼時候從什麼地方復制到這個目錄中的,我想可能是從系統的/user/include中復制過來的。因為在開始編譯的時候使用的glibc是/usr/lib中的。這樣一來,不只要復制include文件還要復制lib文件,這時候又有問題了,我應該復制哪些lib文件呢,整個目錄中有很多庫文件,而且又有各種各樣的link,於是我就試著從頭開始,在編譯binutils之前先安裝linux api再編譯glibc,除了--prefix=/tools之外,不加任何其他參數,編譯成功後,在開始手冊上的第一步。這樣就使得後面編譯過程中--with-local-prefix=/tools這個參數不會導致錯誤。事後我查到關於gcc升級的步驟,也是先編譯glibc(前提是gcc以來的glibc需要更新),然後編譯gcc。

  第二個問題出現在第二次編譯glibc(按照手冊的順序是第一次編譯glibc),make時發生錯誤,網上搜了下,原來是我的debian上缺少gawk,於是就裝了一個,重新configure後編譯通過,這點在之前也提到過,一定不要漏掉LFS手冊中開頭的部分。

  第三個問題是關於環境變量,LFS手冊中再三強調要建立一個lfs用戶,並且所有的第一輪編譯必須使用這個用戶進行。我因為中途切換到root去復制一些文件,之後又忘記切換回來,導致在編譯一個工具時出現 cannot compute sizeof ( double long )這個錯誤。前後檢查都沒問題,後來突然發現自己用的不是lfs用戶,再查看環境變量,和lfs差很多。切換會lfs之後,重新configure,編譯成功。事後分析很可能是缺少LC_ALL=POSIX這個環境變量的原因(猜測)。

  以上3個是我這幾天來遇到的3個主要問題,也都出現在第一輪。第二輪編譯,很順利,基本上是打字編譯再打字再編譯的工作。整個過程我一共用了2個雙休日,和2個半工作日。終於在今天中午順利的啟動了我自己編譯的Linux系統,並且在LFS的網站上注冊了用戶,我的ID是20188。嘿嘿,感覺還不錯,接下來就是要把手冊中我偷懶漏掉或者沒有詳細研究的部分再補上,然後繼續研究BLFS手冊。

  感覺這幾天來還是學到了不少的Linux知識,包括工具的使用,到Linux中文件結構的組織,這算是給我的Linux之旅充了一次電。

Copyright © Linux教程網 All Rights Reserved