使用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