2008-08-30 19:51 Ubuntu - 建立 ARM Toolchain (Cross Compiler)
由於網路上流傳的 ARM Toolchain 有點古老,看起來不是很順眼...
所以,來建立新的 ARM Toolchain 吧~(話說自己動手做比較有成就感?
)
環境:Ubuntu 8.04
1. 開始前的準備:
該抓的東西要先抓...
binutils-2.18
gcc-4.2.3
gdb-6.8
newlib-1.14.0
安裝開發套件:
2. 動工! (黑色粗體字路徑是我的家目錄,請自行修改為你的路徑)
把下載的四包原始碼檔案放在 /home/maxkerr/gnuarm
解壓縮:
為了不必要的麻煩,以 root 的身份來做接下來的步驟,
否則編譯 gcc 時會發生問題(這問題搞的我灰頭土臉...
)。
為了縮短指令參數長度,設定系統變數:
(TARGET_DIR 為編譯後 ARM Toolchain 放置路徑,請依喜好修改)
3. 編譯 binutils
4. 編譯 gcc (上)
5. 編譯 newlib
把 258 行的
MAKEINFO = /home/maxkerr/gnuarm/newlib-1.14.0/missing makeinfo
改成
MAKEINFO = makeinfo
(這問題也卡了我很久說...
)
6. 編譯 gcc (下)
7. 編譯 gdb
8. 把 ARM Toolchain 路徑永久加入環境變數
把 :/usr/local/gnuarm/bin 加到最後一個 " 之前,例如這樣:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/gnuarm/bin"
存檔離開(登出後再登入才生效喔~)
大功告成!來測試一下吧~
#include<stdio.h>
int main(void)
{
printf("ARM Rocks!\n");
return 0;
}
看看有沒有印出 ARM Rocks! 呢?收工!!!
轉載請務必註明作者 (maxkerr),及本文網址!
所以,來建立新的 ARM Toolchain 吧~(話說自己動手做比較有成就感?
)環境:Ubuntu 8.04
1. 開始前的準備:
該抓的東西要先抓...
binutils-2.18
gcc-4.2.3
gdb-6.8
newlib-1.14.0
安裝開發套件:
sudo apt-get install build-essential bison flex texinfo
2. 動工! (黑色粗體字路徑是我的家目錄,請自行修改為你的路徑)
把下載的四包原始碼檔案放在 /home/maxkerr/gnuarm
解壓縮:
cd /home/maxkerr/gnuarm
tar jxvf binutils-2.18.tar.bz2
tar jxvf gcc-4.2.3.tar.bz2
tar jxvf gdb-6.8.tar.bz2
tar zxvf newlib-1.14.0.tar.gz
為了不必要的麻煩,以 root 的身份來做接下來的步驟,
否則編譯 gcc 時會發生問題(這問題搞的我灰頭土臉...
)。sudo -s
為了縮短指令參數長度,設定系統變數:
(TARGET_DIR 為編譯後 ARM Toolchain 放置路徑,請依喜好修改)
export TARGET_DIR="/usr/local/gnuarm"
export LIB_SRC="/home/maxkerr/gnuarm/newlib-1.14.0"
export MY_CONFIG="--target=arm-elf --prefix=$TARGET_DIR --enable-interwork --enable-multilib"
export GCC_CONFIG="--target=arm-elf --prefix=$TARGET_DIR --enable-interwork --enable-multilib --enable-languages=c,c++ --with-newlib --with-headers=$LIB_SRC/newlib/libc/include"
export PATH="$PATH:$TARGET_DIR/bin"
3. 編譯 binutils
cd /home/maxkerr/gnuarm/binutils-2.18
./configure $MY_CONFIG
make all install
4. 編譯 gcc (上)
cd /home/maxkerr/gnuarm/gcc-4.2.3
./configure $GCC_CONFIG
make all-gcc install-gcc
5. 編譯 newlib
cd /home/maxkerr/gnuarm/newlib-1.14.0
./configure $MY_CONFIG
vi Makefile
把 258 行的
MAKEINFO = /home/maxkerr/gnuarm/newlib-1.14.0/missing makeinfo
改成
MAKEINFO = makeinfo
(這問題也卡了我很久說...
)make all install
6. 編譯 gcc (下)
cd /home/maxkerr/gnuarm/gcc-4.2.3
make all install
7. 編譯 gdb
cd /home/maxkerr/gnuarm/gdb-6.8
./configure $MY_CONFIG
make all install
8. 把 ARM Toolchain 路徑永久加入環境變數
vi /etc/environment
把 :/usr/local/gnuarm/bin 加到最後一個 " 之前,例如這樣:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/gnuarm/bin"
存檔離開(登出後再登入才生效喔~)
大功告成!來測試一下吧~
vi armtest.c
#include
int main(void)
{
printf("ARM Rocks!\n");
return 0;
}
arm-elf-gcc ./armtest.c
arm-elf-run ./a.out
看看有沒有印出 ARM Rocks! 呢?收工!!!
轉載請務必註明作者 (maxkerr),及本文網址!



