日期:2005.11.13
昨天建立了乙個基本的工作空間,總結一下:首先在乙個新分割槽上構建ext2檔案系統,作為以後lfs系統的主分割槽,如果可能最好有乙個swap分割槽;然後將此分割槽掛載到乙個目錄下,我們選擇 /mnt/lfs , 並設定環境變數 $lfs=/mnt/lfs; 接下來在 $lfs下新建目錄 tools 並將其在宿主系統 /tools處建立乙個符號連線, 我們馬上就要構建的臨時編譯環境將全部存放到此目錄中; 建立目錄 $lfs/sources用於存放解壓後待編譯的源** ;緊接著在宿主系統新建乙個使用者 lfs , 賦予其 $lfs/tools, $lfs/sources目錄的所有權, 後續步驟將使用 lfs 使用者進行; 最後執行 su - lfs 進入新建的使用者, 為新使用者設定一些環境引數, 目的是使我們在此使用者下編譯的內容盡可能小地依賴於宿主系統. 複習完成了以前的內容, 下邊進入今天的主題->
1. 什麼是臨時編譯環境
見文知義啊,也就是說此編譯環境並不進入到我們最終建成的lfs系統,而只是乙個中間內容;這裡邊包含了乙個完整的開發環境,包括c/c++編譯器, 偵錯程式,檔案編譯器和各種linux 常用工具集.
2. 為什麼要構建臨時編譯環境
構建臨時編譯環境的目的是為了使我們最終的lfs系統完全地與宿主系統隔離. 之所以要隔離的原因是因為真實的作業系統為了減少可執行檔案的大小和最大限度地重用一些通用庫, 因此把這些通用庫做成可在執行時動態載入的動態鏈結庫形式, linux 下常以 *.so 表示, 而windows下常以 *.dll 的形式表示. 實際上我們的宿主主機就已經是乙個編譯環境了,為什麼還要構建乙個臨時的呢? 原因是這樣滴::宿主上的編譯環境是高度依賴於宿主主機的, 基於這樣的原因, 非常不便於我們對編譯後軟體的測試. 因此這裡利用交叉編譯的基本方法, 首先從宿主系統編譯乙個基本上不依賴於宿主的編譯環境, 然後利用這個環境再編譯最終的lfs.
3. 第一步:第一次編譯基本部件 binutils 和 gcc
lfs的作者假設我們已經非常熟悉linux的使用, 因此對於乙個壓縮的源**包如何解壓縮都沒說, 我這裡簡單的說一下: 首先進入解壓後源**欲存放的目錄, cd $lfs/sources , 然後使用 tar 命令解壓binutils工具包, tar -xf $src/binutils-2.15.94.0.2.2.tar.bz2 , 稍等片刻, 就可在 $lfs/sources目錄下發現乙個新的目錄 binutils-2.15.94.0.2.2 , 解壓過程完成.
新建一新目錄來編譯binutils工具, mkdir $lfs/sources/binutils-build , cd binutils-build , 進入目錄, 執行 ../binutils-2.15.94.0.2.2/configure --prefix=/tools --disable-nls 對源**進行自動配置, configure 後的引數 --prefix=/tools 指明其編譯生成的內容存入 /tools 目錄中, 注意, 此目錄是 $lfs/tools 目錄的乙個符號連線, --disable-nls 引數將禁止國際化特性. 配置無錯完成後, 可接著執行 make ; make install 對源**進行編譯並安裝, 注意這裡它將安裝到 $lfs/tools 目錄下. 下邊的這步將調整聯結器, make -c ld clean ; make -c ld lib_path=/tools/lib , 作用就是使用剛生成的庫檔案重新編譯聯結器.
在目錄 $lfs/sources 解壓 gcc3.4.3.tar.bz2 , 然後按照lfs安裝說明上的講解去安裝就行.
4. 第二步:編譯其它工具
實際上這沒有什麼好說的, 只要按照lfs安裝說明, 打補丁, 配置, 編譯, 安裝, 調整, 一路下去就行.
好了, 臨時環境的構建就到這裡, 下面將進入 lfs 系統基本軟體的安裝過程.
LFS6 1學習備忘錄 第四步 使LFS可以啟動
哇,馬上就要結束了.上回說到,虛擬系統的目錄樹建立完成,系統所必須的各種工具軟體,庫也編譯完成,接下來的任務就是安裝與配置各種啟動指令碼,編譯核心,設定啟動分割槽等,let s go 注意 接下來的操作仍然在虛擬系統下完成.1.lfs bootscripts lfs bootscripts 是專門為...
python學習第二步
函式的呼叫 以絕對值函式abs 為例,可以直接從python的官方 檢視文件,也可以從互動介面利用help abs 檢視。常用或不好記函式 持續更新 hex 函式 將乙個整數轉換為十六進製制表示的字串。函式的定義 定義乙個函式要使用def語句,函式返回值用return語句返回。ep def my a...
R學習之第二步
上節課學習了r的安裝以及簡單的一些語法,這節課也是簡單的了解一下r的內容 1,r的包 通過library 檢視所有的包 通過 install.packages car 安裝新的包 通過help package car 檢視關於包的資訊 通過update.package car 更新包 2,結果的重用...