使用gcc-4.6.2和binutils-2.21.1的源代码重新组建android-ndk-r8中的toolchain

 

 

使用的ndk版本是android ndk r8
对$NDK/build/tools/build-gcc.sh
作了以下的修改:

因为用的gdb版本为7.3.1需要expat库的支持,但是build-gcc.sh中没有对其进行定义,所以需要修改这个build-gcc.sh加入定义

在59行下面插入如一下的内容:

EXPAT_VERSION=$DEFAULT_EXPAT_VERSION
register_var_option "--expat-version=<version>" EXPAT_VERSION "Specify expat version"

 

在234行中加入如下的内容:

--with-expat-version=$EXPAT_VERSION \

 

------------------------------------------

第二个修改为系统中的gcc 不支持这个-V -qversion参数,所以要修改这个gdb-7.3.1源代码中的configure删除相关的定义

修改gdb-7.3.1源代码中的configure文件

将4508和3935行中的:
----------------

for ac_option in --version -v -V -qversion ; do 

 

--------------
语句中的-V -qversion 都删除  修改为如下的内容:

for ac_option in --version -v; do

 

--------------源代码的解压------

需用用于的压缩包如下:

binutils-2.21.1a.tar.bz2

gcc-4.6.2.tar.bz2

gdb-7.3.1.tar.bz2

mpc-0.9.tar.gz

mpfr-3.0.1.tar.bz2

gmp-5.0.2.tar.bz2

expat-2.0.1.tar.bz2

把上面提到的压缩包复制一份放置在$NDK/src目录下面, 再在终端输入 touch src/uncompress.sh   #新建一个脚本文体用于解压压缩包; chmod 755 src/uncompress.sh   #加上执行权限

gedit src/uncompress.sh    #用gedit打开刚刚新建的文件

-------------把下面的内容复制进行,再保存------

#!/bin/sh

 echo uncompress the tarball and makedir

 mkdir binutils 

mv binutils-2.21.1a.tar.bz2 ./binutils

 cd binutils

 tar -xjf binutils* 

cd .. 

echo ---------uncompress binutils-2.21.1.tar.bz2 finish------

mkdir expat

 mv expat*.bz2 ./expat

 cd expat 

tar -xjf expat* 

cd .. 

echo ---------uncompress expat-2.0.1.tar.bz2 finish-----------

mkdir gcc

 mv gcc-4.6.2.tar.bz2 ./gcc

 cd gcc tar -xjf gcc*

 cd .. 

echo -----------uncompress gcc-4.6.2.tar.bz2 finish---------

mkdir gdb

 mv gdb-7.3.1.tar.bz2 ./gdb

 cd gdb

 tar -xjf gdb*

 cd .. 

echo -------uncompress gdb-7.3.1.tar.bz2 finish------------

mkdir gmp

 mv gmp*.bz2 ./gmp

 cd gmp

 tar -xjf gmp* 

cd .. 

echo --------uncompress gmp-5.0.2.tar.bz2 finish----------

mkdir mpc

 mv mpc*.gz ./mpc

 cd mpc tar -xzf mpc*

 cd .. 

echo -------uncompress mpc-0.9.tar.gz finish-----------

mkdir mpfr 

mv mpfr*.bz2 ./mpfr

 cd mpfr 

tar -xjf mpfr*

 cd .. 

echo ------uncompress mpfr-0.9.tar.bz2 finish ---------

echo -------uncompress all the tarball --------------

 

--------------------结束-------

保存好,在终端输入: src/uncompress.sh ---------- 等一下,就能把压缩包全部解压完成了。 -----------------------

 

------------------------------
在$NDK目录下面用一个src目录用于放置要用到的源代码(在解压完成后)
分别如下:

$NDK/src/binutils
$NDK/src/gcc
$NDK/src/gmp
$NDK/src/mpc
$NDK/src/mpfr
$NDK/src/gdb
$NDK/src/expat
$NDK/src/build 

#在编译的时候需要用到这个build目录下面的configure配置编译的环境。

其中这个$NDK/src/build里面的内容需要用git来下载

 git clone https://android.googlesource.com/toolchain/build.git $NDK/src/build

 


----------------------------------------

1.在编译的命令中我加入了--sysroot=<path>,因为我在之前已经制作了独立的arm-linux-androieabi-4.4.3的toolchains,如果你没有制作过,就不需要增加了.
2.在编译命令中加入--build-out=<path>,因为系统中的这个tmp目录的空间太少了.
3.在编译命令中加入--package-dir=<path>,目的是把生成的文件打包成一个压缩包arm-linux-androideabi-4.6.2-linux-x86.tar.bz2
4.编译的时候是在$NDK目录进行的

编译的时候用的命令是

build/tools/build-gcc.sh --build-out=/opt/tmp --platform=android-9 --sysroot=/opt/arm-linux-androideabi-4.4.3/sysroot --gdb-version=7.3.1 --binutils-version=2.21.1 --gmp-version=5.0.2 --mpfr-version-3.0.1 --mpc-version=0.9 --expat-version-2.0.1 --package-dir=/home/sn/ANDROID_ROOT -j2 $(pwd)/src $(pwd) arm-linxu-androideabi-4.6.2 

 


---------------在编译完成后会出现如下的提示:

Installing : arm-linux-androideabi-4.6.2 toolchain binaries.
Packageing arm-linux-androideabi-4.6.2-linux-x86.tar.bz2
Done

 

编译时候需要一个小时左右。
编译完成后会在这个--package-dir=<path>,指定的目录生成这个arm-linux-andoirdeabi-4.6.2-linux-x86.tar.bz2

--------------------------------------------

编译好后的arm-linux-androideabi-4.6.2-linux-x86.tar.bz2

 arm-linux-androideabi-4.6.2.tar.bz2

 

 参考的文章:

http://www.rosoo.net/a/201206/16073.html
https://gist.github.com/1739061

 

 

 

 

posted @ 2012-06-17 12:27  sndnvaps  阅读(1351)  评论(0编辑  收藏  举报