說明
此篇再說明如何建立一個 Cross-Compile 的 Linux x86 編譯環境,透過相對應的 CPU 的 toolchain,就可編譯 Asterisk 套件。
重點項目如下:
- 選擇一個好用的 Linux x86 系統,可運作在實體機器或虛擬機,本次使用 Ubuntu 10 32-bit 於 VMware ESXi 下。
- 下載合適的 toolchain 檔案(應該要包含所需的編譯器程式等),並建立 Cross-Compile 執行環境。
- 先 Cross-Compile ncurses 套件,這是編譯 Asterisk 時所需要的。
- 開始 Cross-Compile Asterisk 套件
建立 Cross-Compile 編譯環境
- 依照 embedded system 所用的處理器,找尋並下載 toolchain 的檔案,內含有需要的各種編譯器程式檔。本次以這個 toolchain: arm-2011.03-41-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 為例。
- Cross-Compile 不需要 root 權限,所以在 /home 目錄下作業即可。
- 手動建立幾個作業目錄
- ~/ARM_Cross-Compile/toolchain : 用來放各種不同的 toolchain 檔。
- ~/ARM_Cross-Compile/build_source : 要編譯套件的原始檔
- ~/ARM_Cross-Compile/build_opt : 已作完 Cross-Compile 的套件執行目錄。
- ~/ARM_Cross-Compile/build_start : 實際作 Cross-Compile 的工作目錄。
- 修改 PATH
編輯 ~/.profile,加上 toolchain 的編譯器執行檔路徑
export PATH="$PATH:/home/alang/ARM_Cross-Compile/toolchain/CodeSourcery/bin/
Cross-Compile ncurses
cd /home/alang/ARM_Cross-Compile/build_start/ncurses-5.9/
CC=arm-none-linux-gnueabi-gcc \
CXX=arm-none-linux-gnueabi-g++ \
./configure arm-linux --host=arm-none-linux-gnueabi --with-shared --without-ada --with-build-cc=gcc --with-build-cpp=arm-none-linux-gnueabi-g++ --enable-termcap --prefix=/home/alang/ARM_Cross-Compile/build_opt/ncurses
make
make install