【转】如何在Ubuntu11.10(32位)下编译Android4.0源码(图文)

原文网址:http://blog.csdn.net/flydream0/article/details/7046612

关于如何下载Android4.0的源码请参考我的另一篇文章:

http://blog.csdn.net/flydream0/article/details/7036156

3 开始编译

3.1 初始化环境
$ source build/envsetup.sh
3.2 选择目标
$ lunch full-eng
大概会再现如下提示:
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=2.3.3
TARGET_PRODUCT=full
TARGET_BUILD_VARIANT=eng
TARGET_SIMULATOR=false
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
HOST_ARCH=x86
HOST_OS=linux
HOST_BUILD_TYPE=release
BUILD_ID=GRI40

============================================

3.3 编译源码
$ make -j4
大概会出现如下提示:
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=2.3.3
TARGET_PRODUCT=full
TARGET_BUILD_VARIANT=eng
TARGET_SIMULATOR=false
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
HOST_ARCH=x86
HOST_OS=linux
HOST_BUILD_TYPE=release
BUILD_ID=GRI40
============================================

Checking build tools versions...


接下来就会编译很长时间,然而编译过程并不会是一帆风顺的,如果你的OS是32位Ubuntu 11.10,有可能会出现如下错误:

问题1:
现象:
<command-line>:0:0: error: "_FORTIFY_SOURCE" redefined [-Werror]
 <built-in>:0:0: note: this is the location of the previous definition
 cc1plus: all warnings being treated as errors
make: *** [out/host/linux-x86/obj/EXECUTABLES/obbtool_intermediates/Main.o] Error 1

原因:
此处编译错误是由于ubuntu 11.10采用了GCC4.6.1导致的。

解决方法:
使用gcc4.4.6版本进行编译.

问题2:
现象:
In file included from external/oprofile/libpp/arrange_profiles.cpp:24:0: 
external/oprofile/libpp/format_output.h:94:22: error: reference ‘counts’ c-fpermissiveannot be declared ‘mutable’ [-fpermissive]
host C++: liboprofile_pp <= external/oprofile/libpp/callgraph_container.cpp 
make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/liboprofile_pp_intermediates/arrange_profiles.o] Error 1
make: *** Waiting for unfinished jobs....

解决:
使用gcc4.4.6版本进行编译.

ubuntu 11.10的gcc版本是4.6.1,版本太高,编译android时出错,要把gcc版本改为4.4.6, 4.5的版本据说可以,但没试过.
通 过gcc -v命令可以发现gcc库在/usr/lib/gcc/i686-linux-gnu目录下,该目录下有当前系统支持的各种版本gcc库 。在安装gcc 4.4前该目录下是没有4.4目录的,安装gcc 4.4后该目录下就会多出4.4这个目录,且该4.4目录下有各种相应库文件。
ubuntu 32bit系统下安装gcc 4.4的最好方法是仅用以下两条命令,不需要其它命令,否则编译时可能会出错。
sudo apt-get install gcc-4.4
sudo apt-get install g++-4.4

装完后在/usr/bin目录下
$ ls -l gcc*
lrwxrwxrwx 1 root root      7 2011-10-29 09:11 gcc -> gcc-4.6
-rwxr-xr-x 1 root root 224544 2011-10-06 05:47 gcc-4.4
-rwxr-xr-x 1 root root 302104 2011-09-17 05:43 gcc-4.6
发现gcc 链接到gcc-4.6,  需要将它改为链接到gcc-4.4 :
sudo mv gcc gcc.bak
sudo ln -s gcc-4.4 gcc
同理
ls -l g++*
lrwxrwxrwx 1 root root      7 2011-08-14 15:17 g++ -> g++-4.6
-rwxr-xr-x 1 root root 228640 2011-10-06 05:45 g++-4.4
-rwxr-xr-x 1 root root 306200 2011-09-17 05:39 g++-4.6
需要将g++链接改为g++-4.4:
/usr/bin$ sudo mv g++ g++.bak
/usr/bin$sudo ln -s g++-4.4 g++

再查看gcc和g++版本号:
gcc -v
g++ -v
均显示gcc version 4.4.6 ,说明gcc 4.4安装成功。
测试:
编译android,从2011-10-29 23:58开始,到2011-10-30 01:42编译完成,没有错误。这验证了gcc 4.4安装正确,也验证了android文件与高版本的gcc不兼容。

编译过程大概花了2+个小时.

完成后如下图所示:

3.4 运行

$emulator

注: Android4.0源码默认下载是不包括内核源码的,有关Android内核源码的下载和编译请参考我的另一篇博文:

http://blog.csdn.net/flydream0/article/details/7070392

时间: 2024-10-26 12:14:48

【转】如何在Ubuntu11.10(32位)下编译Android4.0源码(图文)的相关文章

Ubuntu16.04下编译android6.0源码

http://blog.csdn.net/cnliwy/article/details/52189349 作为一名合格的android开发人员,怎么能不会编译android源码呢!一定要来一次说编译就编译的旅程,否则你的人生是不完整的!好,那么我们进入正题! 本次编译环境采用Ubuntu16.04LTE,android源码选择android6.0!官方建议采用Ubuntu14版本,主要是我刚开始没在意系统版本,然后就直接下载安装16.04版本了,然后也懒得换了,所以就选择了这个版本....下面我

elementary os 0.4.1下编译GCC-7.1源码并安装成功

参考文章:http://www.2cto.com/os/201402/281131.html 前几天为了图个新鲜,安装了elementary os 0.4.1,的确是一股清流,可惜的是gcc版本觉得有点老了点,这不刚刚gcc 7.1也出来了,就想试试,特记录如下: 准备必要的系统环境:(升级系统到最新,安装必要的工具) sudo apt-get update                             #升级系统到最新 sudo apt-get install gcc g++ gaw

Centos6.5下OpenCV3.1.0源码安装

下载OpenCV源代码,并解压缩. 使用cd命令,切换到压缩目录下. 使用 $cmake CMakeList.txt 命令,在此期间,可能会出现ippicv_linux_20151201无法下载的状况,需要自行上网站上下载ippicv_linux_20151201.tgz文件,此处的ippicv是一个intel处理器的底层加速库,如果在RAM平台编译,则不会出现此状况.由于该文件大小超过10M,所以无法作为附件上传,你可以自行百度搜索,下载完成后,将该压缩文件拷贝到3rdparty/ippicv

32位Windows7上8G内存使用感受+xp 32位下使用8G内存 (转)

32位Windows7上8G内存使用感受+xp 32位下使用8G内存 博客分类: Windows XPWindowsIE企业应用软件测试 我推荐做开发的朋友:赶快加入8G的行列吧....呵呵..超爽...速度超快...基本没有等待的概念...深有体会... 为什么要使用8G内存?在国内外各大论坛上,这都是一个有争议的问题.问题的反方论据非常充分: 除了少数专业领域,大多数应用程序不会需要超过1G的内存. 游戏使用的内存最多也是2G而已. 8G内存不便宜,不如花在显卡上. 升级到8G后没有什么明显

Linux(Red Hat 6 32位) 下安装Mysql5.6.30

1. 下载MySQL 5.6 下载页面:http://dev.mysql.com/downloads/mysql/ 此处选择"Red Hat Enterprise Linux 6 / Oracle Linux 6 (x86, 32-bit), RPM Bundle"下载,下载至/root/fuxian/目录下,下载文件名为"MySQL-5.6.30-1.el6.i686.rpm-bundle.tar" 2. 解压tar包 cd /fuxian/Downloads/

centOS 64位下编译hadoop2.4.1

1. 安装JDK a.      解压jdk [[email protected] software]$ tar -xvzf jdk-7u60-linux-x64.tar.gz b.      设置环境变量 PATH=$PATH:$HOME/bin export JAVA_HOME=/home/bigdata001/BigDataPlatform/jdk1.7.0_60 export JAVA_BIN=$JAVA_HOME/bin export CLASSPATH=.:$JAVA_HOME/li

Ubuntu14.04 32位上编译VLC2.2.0源码操作步骤

1.  首先安装必须的依赖软件,打开终端,执行: sudo apt-get install git libtool build-essential pkg-config autoconf 2. 从http://www.videolan.org/vlc/download-sources.html 下载vlc-2.2.0源码,将其存放到/home/spring/VLC目录下,解压缩: xz -dk vlc-2.2.0.tar.xz tar xvf vlc-2.2.0.tar 3. 获取第三方库: c

Solr4.8.0源码分析(10)之Lucene的索引文件(3)

Solr4.8.0源码分析(10)之Lucene的索引文件(3) 1. .si文件 .si文件存储了段的元数据,主要涉及SegmentInfoFormat.java和Segmentinfo.java这两个文件.由于本文介绍的Solr4.8.0,所以对应的是SegmentInfoFormat的子类Lucene46SegmentInfoFormat. 首先来看下.si文件的格式 头部(header) 版本(SegVersion) doc个数(SegSize) 是否符合文档格式(IsCompoundF

在ubuntu12.04下编译android4.1.2添加JNI层出现问题

tiny4412学习者,在ubuntu12.04下编译android4.1.2添加JNI层出现问题: (虚心请教解决方法) trouble writing output: Too many methods: 65540; max is 65536. By package: 26 android 145 android.accessibilityservice 702 android.accounts 436 android.animation 8 android.annotation 3793