2009年10月31日 星期六

Ubuntu 9.04 - Build ARM Toolchain (Cross Compiler)

環境: Ubuntu 9.04

前置作業:
  • 安裝相關開發套件

#sudo apt-get install build-essential bison flex texinfo

  • 手動更改gcc版本
    • 由於gcc存在著兼容性的問題,所以部分程式可能需要使用指定版本的gcc才能編譯通過。在編譯ARM Toolchain嘗試過程中, 我使用 gcc-4.1.0 版本才得以順利通過編譯。

    1. 先查看目前gcc版本,通常為 gcc-4.3.2 版本,若已為 gcc-4.1.0 版本即可跳過此步驟。
    2. #gcc --version
    3. 觀看系統已安裝之所有 gcc 版本,此時會發現系統已安裝 gcc-4.3.2 之版本。
    4. #ls /usr/bin/gcc* -l
    5. 利用update-alternatives工具來改變gcc鏈結,先增加 gcc-4.3.2 與 gcc-4.1.0 兩版本選項。
    6. #update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.3 40 
      #update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.1 30
    7. 切換預設 gcc 版本到 gcc-4.1.0,然後鍵入所需要的版本的相對應數字,最後再確定一次目前 gcc 版本即完成。
    8. #update-alternatives --config gcc
      #gcc --version

  • 開始進行 ARM Toolchain 安裝步驟

    1. 先設定欲安裝相關套件之版本,與安裝參數以減少命令長度
    2. #export TARGET=arm-elf
      #export PREFIX=/usr/src/esd/toolchain
      // Install location of your final toolchain (記得先建立此資料夾)
      #export PATH="$PATH:$PREFIX/bin"
      #export BINUTILS=binutils-2.19.1
      #export GCC=gcc-4.1.0
      #export NEWLIB=newlib-1.17.0
      #export GDB=gdb-6.8
      
    1. Install binutils-2.19.1
    2. #tar xfvj $BINUTILS.tar.bz2
      #mkdir build_binutils
      #cd build_binutils
      #../$BINUTILS/configure --target=$TARGET --prefix=$PREFIX --enable-interwork --enable-multilib
      #make all
      #make install
    3. Install gcc-4.1.0 (上)          先只針對 gcc 的部分編譯安裝
    4. #wget -c ftp://ftp.gnu.org/gnu/gcc/$GCC/$GCC.tar.bz2
      #tar xfvj $GCC.tar.bz2 #mkdir build_gcc
      #cd build_gcc
      #../$GCC/configure --target=$TARGET --prefix=$PREFIX --enable-interwork --enable-multilib --enable-languages=c,c++ --with-newlib --with-headers=/balabala/newlib-1.17.0/newlib/libc/include(--with-headers即指向newlib-1.17.0解壓縮後所置放的位置)
      #make all-gcc 
      #make install-gcc
    5. Install newlib-1.17.0
    6. #wget -c ftp://sources.redhat.com/pub/newlib/$NEWLIB.tar.gz
      #tar xfvz $NEWLIB.tar.gz #mkdir build_newlib
      #cd build_newlib
      #../$NEWLIB/configure --target=$TARGET --prefix=$PREFIX --enable-interwork --enable-multilib
      #make
      #make install
    7. Install gcc-4.1.0 (下)           返回原 build_gcc 目錄下,完整編譯 gcc
    8. #cd build_gcc
      #make all install
    9. Install gdb-6.8
    10. #wget -c ftp://ftp.gnu.org/gnu/gdb/$GDB.tar.bz2
      #tar xfvj $GDB.tar.bz2
      #mkdir build_gdb
      #cd build_gdb
      #../$GDB/configure --target=$TARGET --prefix=$PREFIX --enable-interwork --enable-multilib
      #make
      #make install
    11. 將ARM Toolchain路徑永久加入環境變數
    12. #vim /etc/environment
      把ARM Toolchain TARGET安裝路徑加入最後一個之前,例如下所示:
      PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/src/esd/toolchain/bin"
      存檔離開(登出後再登入即生效)
      ---  大功告成 ----