升級 Android 內建 GNU Toolchain 到 gcc 4.4

GNU GCC 4.4 已於 Apr 21, 2009 正式釋出,伴隨眾多改進、修正,與硬體平台改善,詳情可見"GCC 4.4 Release Series Changes, New Features, and Fixes",不過 Android repository 裡頭的 prebuilt GNU Toolchain 仍停留在 gcc-4.2.1 (Release date: Jul 18, 2007),總是有些遺憾,且讓我們動手改變。

EMBINUX™ Lab 提供一份 prebuilt GNU Toolchain for Android,參考其 git 的更動,可建立一套基於 gcc-4.4 與 binutils-2.19.1 的 toolchain,筆者準備打包好的套件: toolchain-arm-eabi-4_4_0.tar.bz2。另外,因為 gcc-4.4 對於 C/C++ 語意更加嚴格,像是應用程式對 va_list 的使用就需要調整,筆者將這些小修改整理為 migrate-gcc44.patch。以下是簡要的升級方式:

# cd mydroid
# cd prebuilt/linux-x86/toolchain
# tar jxvf toolchain-arm-eabi-4_4_0.tar.bz2
# cd ../../..
# patch -p1 < migrate-gcc44.patch
重新編譯與建構 Android 即可。需要更動的部份,列出作參考:
# diffstat migrate-gcc44.patch
core/combo/linux-arm.mk | 2 +-
dist/sqlite3.h | 2 +-
envsetup.sh | 2 +-
pdk/ndk/samples/sample/Makefile.lib | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)


About this entry


  1. hhocean 2010年5月12日 下午4:01

    migrate-gcc44.patch好像下不來,可以麻煩檢查一下嗎?感謝。
    另外va_list在arm上是不是也有問題?我把toolchain換成4.4以後,printf完全失效,只要一用就segmentation,請問有修正的patch嘛?

     

張貼留言