建立 Cross GNU Toolchains for ARM

jollen 發表於 August 11, 2004 4:09 PM

作者/陳俊宏
Copyright (c) 2004 www.jollen.org
Last date: 2004/08/11

1. 下載以下套件:

gcc-3.4.1.tar.bz2
newlib-1.12.0.tar.gz
binutils-2.15.tar.bz2

2. 解開套件:

# bzip2 -dc gcc-3.4.1.tar.bz2 | tar xf -
# tar zxvf newlib-1.12.0.tar.gz
# bzip3 -dc binutils-2.15.tar.bz2 | tar xf -

3. 建立編譯用目錄:

# mkdir build-gcc build-binutils

4. 首先編譯GNU binutils套件:

# cd build-binutils
# ../binutils-2.15/configure --srcdir=../binutils-2.15 --target=arm-elf --prefix=/usr/local/gnu-3.4.1 --enable-softfloat –-enable-shared
# make all
# make install

- ARM7TDMI 與 ARM9TDMI 不支援硬體浮點運算。
- 筆者使用的 target device (KS8695P) 是 ARM9TDMI 的裝置,ARM9TDMI並沒有DSP,因此必須建立啟用軟體浮點運算功能。
- 編譯完成後可以在 /usr/local/gnu-3.4.1 目錄下找到執行檔。

5. 編譯GCC與Newlib:

一開始必須先將 newlib 放到 gcc 原始碼目錄下,才能和gcc一併編譯.

# cd gcc-3.4.1
# ln -s ../newlib-1.12.0 newlib

接著設定GCC.

# cd ..
# cd build-gcc
# ../gcc-3.4.1/configure --srcdir=../gcc-3.4.1 --target=arm-elf --prefix=/usr/local/gnu-3.4.1 --with-cpu=arm9 --with-newlib --enable-threads --with-float=soft --without-headers –-enable-languages=c

GCC 3.4 必須在編譯設定時加上 “--with-float=soft|hard” 來指定要使用軟體或硬體浮點運算,在這裡我們必須指定使用軟體浮點運算。GCC 3.4 針對 ”arm-elf” 的 cross toolchains 改用由 Nicolas Pitre 所設計的ARM軟體浮點運算功能,這個新的ARM軟體浮點運算實作不但體積小而且比原來的C版本速度更快,因此請務必將target設定成arm-elf,GCC預設才會去使用新的軟體浮點運算。

執行編譯並安裝:

# make all
# make install

6. 最後可以在 /usr/local/gnu-3.4.1 目錄下取得完整的 Cross GNU toolchains for ARM。得到 cross toolchain 後,下一步則是要cross-compiling uClibc 或 glibc,取得C程式庫後才能開始cross-compiling應用程式。

Jollen's Blog 使用 Github issues 與讀者交流討論。請點擊上方的文章專屬 issue,或 open a new issue

您可透過電子郵件 jollen@jollen.org,或是 Linkedin 與我連絡。更歡迎使用微信,請搜尋 WeChat ID:jollentw