64位Ubuntu编译android的环境配置问题

 下载了Android的最新版本4.2.1,用以前的方式将-m64替换为-m32行不通了,正好笔记本上还有一块闲置硬盘,笔记本又是64位的。干脆就在闲置硬盘上装个64位的,下载完64位镜像后,用U盘制作了安装盘,不到半小时就装好了,按照以前的方式安装了开发编译环境,在编译官方的4.2.1代码时,很快出现如下错误:

PRODUCT_COPY_FILES frameworks/base/data/sounds/ringtones/ogg/Solarium.ogg:system/media/audio/ringtones/Solarium.ogg ignored.
host C: acp <= build/tools/acp/acp.c
prebuilts/tools/gcc-sdk/../../gcc/linux-x86/host/i686-linux-glibc2.7-4.6/bin/i686-linux-gcc
prebuilts/tools/gcc-sdk/gcc: line 40: prebuilts/tools/gcc-sdk/../../gcc/linux-x86/host/i686-linux-glibc2.7-4.6/bin/i686-linux-gcc: No such file or directory
make: *** [out/host/linux-x86/obj/EXECUTABLES/acp_intermediates/acp.o] Error 127

在网上google一番,有遇到类似问题,但没有答案。自己分析 解决。看了下prebuilts/tools/gcc-sdk/gcc,里面的脚本提示 prebuilts/tools/gcc-sdk/../../gcc/linux-x86/host/i686-linux-glibc2.7-4.6/bin/i686-linux-gcc出错,ls一下,这个文件是存在的,但为何提示没有呢?那我干脆执行一下,原来提示同样的错误:

bill@Ubuntu:~/android-4.2.1_r1$ prebuilts/tools/gcc-sdk/../../gcc/linux-x86/host/i686-linux-glibc2.7-4.6/bin/i686-linux-gcc -v
bash: prebuilts/tools/gcc-sdk/../../gcc/linux-x86/host/i686-linux-glibc2.7-4.6/bin/i686-linux-gcc: No such file or directory

再用file和ldd一看,原来是32位的可执行程序,32位的不能在64位机器上执行的缘故:
bill@Ubuntu:~/android-4.2.1_r1$ file prebuilts/tools/gcc-sdk/../../gcc/linux-x86/host/i686-linux-glibc2.7-4.6/bin/i686-linux-gcc
prebuilts/tools/gcc-sdk/../../gcc/linux-x86/host/i686-linux-glibc2.7-4.6/bin/i686-linux-gcc: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, stripped
bill@Ubuntu:~/android-4.2.1_r1$ ldd prebuilts/tools/gcc-sdk/../../gcc/linux-x86/host/i686-linux-glibc2.7-4.6/bin/i686-linux-gcc
not a dynamic executable

后在同事帮助下(其64位机器上上述32位的工具链可以正常运行),修改了prebuilts/tools/gcc-sdk/gcc,让其直接调用64位的工具链,但出现其它库头文件缺少的错误。对照http://source.android.com/source/initializing.html的官方指南,原来某些库没有安装,象32位程序在64位机器上运行必须有ia32-libs才行:

sudo apt-get install ia32-libs (http://maketecheasier.com/run-32-bit-apps-in-64-bit-linux/2009/08/10)

按照Google的官方指南,补齐缺少的库,Android4.2.1编译开始呼呼地build起来了并顺利build完成。

原文地址:https://www.cnblogs.com/tairikun/p/3383102.html