作者嘗試在 Cygwin 下構建失敗後,決定安裝 Ubuntu 12.04.2 雙系統,直接在原生 Linux 環境下使用 crosstool-NG 製作 arm-unknown-linux-gnueabi 工具鏈。
sudo apt-get update sudo apt-get install bison flex gperf texinfo gawk libtool automake libncurses5-dev gcj-jdk g++
關鍵坑點:./configure --prefix 路徑不能設置在需要 root 權限的目錄(如 /etc),否則 make install 會報錯「不能以 root 用戶運行」。建議設置在用戶主目錄,如 $HOME/x-tools。
# 1. 配置、編譯、安裝 crosstool-NG 自身 ./configure --prefix=$HOME/x-tools/ct-ng make make install # 2. 將 ct-ng 加入 PATH echo 'export PATH="$PATH:$HOME/x-tools/ct-ng/bin"' >> ~/.profile source ~/.profile # 3. 創建構建目錄並選擇目標元組 mkdir -p $HOME/build-toolchain cd $HOME/build-toolchain ct-ng arm-unknown-linux-gnueabi # 4. 開始構建(耗時 2-3 小時) ct-ng build
| 錯誤現象 | 解決命令 |
|---|---|
| Missing: 'i686-pc-linux-gnu-gcj' | sudo apt-get install gcj-jdk |
| Missing: 'i686-pc-linux-gnu-g++' | sudo apt-get install g++ |
| Retrieving 'linux-3.7.3' 卡住 | 網絡下載較慢,耐心等待或預先鏡像內核源 |
| configure: error: expat is missing | sudo apt-get install libexpat1-dev |
構建成功後,工具鏈位於 $HOME/x-tools/arm-unknown-linux-gnueabi/bin。永久添加到 PATH:
echo 'export PATH="$PATH:$HOME/x-tools/arm-unknown-linux-gnueabi/bin"' >> ~/.profile source ~/.profile # 測試 arm-unknown-linux-gnueabi-gcc --version
ct-ng menuconfig)可視化定製內核版本、glibc 版本、線程庫等,極其強大。ct-ng saveconfig 保存配置離線構建。