全文90% 參考Ubuntu - 建立 ARM Toolchain (Cross Compiler)
不一樣的部份就是版本比他用的更新,然後提一下碰到的問題
環境:乾淨的ubuntu 9.04
step 1:安裝額外的套件,有些名字不太對,自已改一下
build-essential (gcc glibc)
bison (binutils and gcc )
flex (binutils and gcc)
texinfo (makeinfo
libncurses5-dev ( termcap)
mpfr-dev (gcc build)
gmp-dev (gcc build)
step 2 : 下載source package,解壓縮到目錄
binutils-2.19.1
gcc-4.4.0
newlib-1.17.0
gdb-6.8
step 3 : 設定編譯環境
TARGET_DIR 和 LIB_SRC請依照你安裝位置和源始碼放位置修改
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"
step 4 : 編譯 binutils
套用patch,一個debug function format error
cd binutils-2.19.1
mkdir build;cd build
../configure $MY_CONFIG
sudo make -j 4 all install
step 5 : 編譯 gcc part 1
cd gcc-4.4.0
mkdir build;cd build
../configure $GCC_CONFIG
sudo make all-gcc install-gcc
step 6 : 編譯 newlib
cd newlib-0.17.0
mkdir build;cd build
../configure $MY_CONFIG
make all
sudo -c
export PATH="$PATH:$TARGET_DIR/bin" (為了找到arm-elf-cc)
make install
step 7 : 編譯 gcc part 2
cd gcc-4.4.0/build
sudo make all install
step 8 : 編譯 gdb
套用修正 p1, p2, p3, p4, p5, p6,
cd gdb-6.8
mkdir build;cd build
../configure $MY_CONFIG
sudo make all install
step 9 : 設定運行環境
把 :/usr/local/gnuarm/bin 加到 /etc/environment 中 PATH 最後一個 " 之前,例如這樣:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/gnuarm/bin"
step 10 : 測試
arm-elf-cc hello.c
arm-elf-run a.out
文章標籤
全站熱搜

你好 參考您的例子 自行再動手編譯 但卻在編譯 gcc-4.4.0 時翻生錯誤 在UBUNTU 9.04 &9.10 都是如此 想請問您當初是怎麼編譯過得呢? 還有其他的修正檔需要使用嗎 ? 感謝您的指導 謝謝
我久遠的印像中gcc 的部份是不用額外的patch,有error message 嗎? 寄個mail 來如何...:P cmchao@gmail.com,不過話說gcc 4.5 都release 要不要幫忙試試寫篇心得文...:P
你好~參考您的步驟 , 在make newlib時 , 發生找不到arm-elf-ar的error 請問該如何解決呢?
arm-elf-ar是在binutil 編完就會有的tool,應該是你沒把binutil安裝的路徑設到你的PATH裡,才會找不到
我在path中設了/usr/local/gnuarm , 也設了解壓縮的目錄 依然發生 /bin/bash: line 2: arm-elf-ar:命令找不到 完整error如下 : for i in argz/lib.a stdlib/lib.a ctype/lib.a search/lib.a stdio/lib.a string/lib.a signal/lib.a time/lib.a locale/lib.a reent/lib.a errno/lib.a misc/lib.a syscalls/lib.a machine/lib.a sys/lib.a; do \ arm-elf-ar x ../$i; \ done; \ arm-elf-ar rc ../libc.a *.o 還是說是arm-rlf-ar中沒辦法辨試這指令?
後來又抓了最新的binutils 跟 newlib重編一次 到了make newlib時發生另一個問題 unknown pseudo-op: `.code' in /newlib-1.18.0/build/arm-elf/thumb/newlib/libc/argz'
這這這,我就不清楚了,google 是你的好朋友 而且現在我都要用codesourcery 的toolchain 了...@@~
我也懶的搞囉 直接用buildroot去建比較省事....:D