838
汽車大全
《Linux From Scratch》第二部分:準備構建 第五章:構建臨時文件係統- 5.4. Binutils-2.25 - 第一遍
Binutils 軟件包包括了一個鏈接器、匯編器和其它處理目標文件的工具。
5.4.1. 安裝交叉編譯的 Binutils
![[Note]](https://res.3425.com.cn/aliyunqi/20171107/1510036484124.png)
注意
返回前麵章節重新閱讀注意事項。了解標記為重要的注意事項能在後麵幫你節省很多問題。
第一個編譯 Binutils 軟件包很重要,因為 Glibc 和 GCC 會對可用的鏈接器和匯編器執行各種測試以決定啟用它們自己的哪些功能。
Binutils 手冊建議在源碼目錄之外一個專門的編譯目錄裏麵編譯 Binutils:
mkdir -v ../binutils-build cd ../binutils-build
![[注意]](https://res.3425.com.cn/aliyunqi/20171107/1510036484124.png)
注意
為了衡量在本書中其餘部分所使用 SBU 值,我們要測量一下這個軟件包從配置到包括第一次安裝在內的編譯時間。為了輕鬆的做到這點,用類似 time { ./configure ... &&... && make install; }
的方式將命令包裝在 time 命令中。
![[Note]](https://res.3425.com.cn/aliyunqi/20171107/1510036484124.png)
注意
第五章中大概編譯的 SBU 值和所需磁盤空間不包括測試套件數據。
現在準備編譯 Binutils:
../binutils-2.25/configure \ --prefix=/tools \ --with-sysroot=$LFS \ --with-lib-path=/tools/lib \ --target=$LFS_TGT \ --disable-nls \ --disable-werror
配置選項的含義:
-
--prefix=/tools
-
告訴配置腳本將 Binutils 程序安裝到
/tools
文件夾。 -
--with-sysroot=$LFS
-
用於交叉編譯,告訴編譯係統在 $LFS 中查找所需的目標係統庫。
-
--with-lib-path=/tools/lib
-
指定需要配置使用的鏈接器的庫路徑。
-
--target=$LFS_TGT
-
因為
LFS_TGT
變量中的機器描述和 config.guess 腳本返回的值略有不同,這個選項會告訴 configure 腳本調整 Binutils 的編譯係統來編譯一個交叉鏈接器。 -
--disable-nls
-
這會禁止國際化(i18n),因為國際化對臨時工具來說沒有必要。
-
--disable-werror
-
這會防止來自宿主編譯器的警告事件導致停止編譯。
繼續編譯軟件包:
make
現在編譯完成了。通常現在我們會運行測試套件,但在這個初期階段,測試套件框架(Tcl、Expect 和 DejaGNU) 還沒有就緒。在此進行測試的好處不多,因為第一遍編譯的程序很快會被第二遍的代替。
如果是在 x86_64 上編譯,創建符號鏈接,以確保工具鏈的完整性:
case $(uname -m) in x86_64) mkdir -v /tools/lib && ln -sv lib /tools/lib64 ;; esac
安裝軟件包:
make install
該軟件包的詳細信息在 6.13.2,“Binutils 軟件包內容”中。
創建者:Gerard Beekmans
編輯者:Matthew Burgess 和 Armin K.
翻譯團隊:LCTT
譯者/校對:ictlyh,wxy
最後更新:2017-11-07 14:34:44