原文网址:http://www.cnblogs.com/dwayne/archive/2011/11/16/2251734.html

本文介绍在ubuntu 11.10系统下编译android 2.3.3源码,编译之前请确定上两篇文章(http://www.cnblogs.com/dwayne/archive/2011/11/16/2250732.html和http://www.cnblogs.com/dwayne/archive/2011/11/11/2245383.html)中所需的准备工作已经成功完成。编译完成生成系统镜像文件,并在模拟器中运行。

准备工作完成后,开始编译工作。下载下来的源码有5G多,如果按照我之前写的获取源码的话,源码目录为~/Android/source

一、环境设置

wayne@wayne-pc:~/Android/source$ source build/envsetup.sh including device/htc/passion/vendorsetup.shincluding device/samsung/crespo/vendorsetup.shwayne@wayne-pc:~/Android/source$ lunch full-eng

在lunch时,如果提示permission denied权限不够的话,需要在源码根目录下执行,赋予目录下所有文件权限

wayne@wayne-pc:~/Android/source$ sudo chmod -R 777 *

这时候会lunch指令会打印出如下所示文段:

============================================PLATFORM_VERSION_CODENAME=RELPLATFORM_VERSION=2.3.3TARGET_PRODUCT=fullTARGET_BUILD_VARIANT=engTARGET_SIMULATOR=falseTARGET_BUILD_TYPE=releaseTARGET_BUILD_APPS=TARGET_ARCH=armHOST_ARCH=x86HOST_OS=linuxHOST_BUILD_TYPE=releaseBUILD_ID=GRI40============================================

一、开始编译

编译过程可能会出现许多错误而中止,在此wayne将会把所有遇到的问题以及解决方法一一贴出来,以供以后参考。

1.Q:

wayne@wayne-pc:~/Android/source$ make -j2============================================PLATFORM_VERSION_CODENAME=RELPLATFORM_VERSION=2.3.3TARGET_PRODUCT=fullTARGET_BUILD_VARIANT=engTARGET_SIMULATOR=falseTARGET_BUILD_TYPE=releaseTARGET_BUILD_APPS=TARGET_ARCH=armHOST_ARCH=x86HOST_OS=linuxHOST_BUILD_TYPE=releaseBUILD_ID=GRI40============================================Checking build tools versions...build/core/main.mk:76: ************************************************************build/core/main.mk:77: You are attempting to build on a 32-bit system.build/core/main.mk:78: Only 64-bit build environments are supported beyond froyo/2.2.build/core/main.mk:79: ************************************************************build/core/main.mk:80: *** stop。 停止。

解决方法:cd到源码根目录,执行:

$ gedit build/core/main.mk

找到

ifneq (64,$(findstring 64,$(build_arch)))

将其修改为

ifneq (i686,$(findstring i686,$(build_arch)))

然后依次修改以下四个make文件:

external/clearsilver/cgi/Android.mkexternal/clearsilver/java-jni/Android.mkexternal/clearsilver/util/Android.mkexternal/clearsilver/cs/Android.mk

将其中的

LOCAL_CFLAGS += -m64LOCAL_LDFLAGS += -m64

修改为

LOCAL_CFLAGS += -m32LOCAL_LDFLAGS += -m32

2.Q:

frameworks/base/libs/utils/RefBase.cpp:483:67: error: passing ‘const android::RefBase::weakref_impl’ as ‘this’ argument of ‘void android::RefBase::weakref_impl::trackMe(bool, bool)’ discards qualifiers [-fpermissive] make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libutils_intermediates/RefBase.o] Error 1

解决方法:

$ gedit frameworks/base/libs/utils/Android.mk

修改以下语句

LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS)

LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS) –fpermissive

3.Q:

arm-eabi-gcc: error trying to exec 'cc1': execvp: No such file or directorymake: *** [out/target/product/generic/obj/lib/crtbegin_dynamic.o] Error 1

如果之前的依赖包都已经安装成功的话,此处应该是交叉编译工具权限的问题。这个问题只要在文章开头lunch时执行了赋予权限命令,就应该不会遇到了。

4.Q:

<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 errorsmake: *** [out/host/linux-x86/obj/EXECUTABLES/obbtool_intermediates/Main.o] Error 1

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

解决方法:

修改源码目录下/build/core/combo/HOST_linux-x86.mk文件:

将以下语句

HOST_GLOBAL_CFLAGS += -D_FORTIFY_SOURCE=0

修改为

HOST_GLOBAL_CFLAGS += -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0

编译时还有可能出现类似的错误,根据错误提示的关键词比如g++错误、jre错误等,都是些细节问题,比较好解决。

经过两小时左右的等待后,终于顺利完成。编译成功后会生成system.img等镜像文件,下面是编译完成提示:

Target system fs image: out/target/product/generic/obj/PACKAGING/systemimage_intermediates/system.imgInstall system fs image: out/target/product/generic/system.imgInstalled file list: out/target/product/generic/installed-files.txt

三、启动所编译的系统

编译完之后会在out/target/product/generic目录下生成system.img ramdisk.img userdata.img三个镜像文件。

在启动模拟器之前,需要先为模拟器系统设置环境变量,执行gedit ~/.bashrc,新增环境变量如下:

export ANDROID_PRODUCT_OUT=~/Android/source/out/target/product/genericANDROID_PRODUCT_OUT_BIN=~/Android/source/out/host/linux-x86/binexport PATH=${PATH}:${ANDROID_PRODUCT_OUT_BIN}:${ANDROID_PRODUCT_OUT};

最后,同步这些变化并启动模拟器:

$ source ~/.bashrc$ cd ~/Android/source/out/target/product/generic$ emulator -system system.img -data userdata.img -ramdisk ramdisk.img

加载上我们所编译出来的系统文件,终于出现了期待已久的模拟器:

到这里,源码编译就完成了,接下来就可以进行自己的改动测试了。依然,欢迎交流指正By wayne!

作者:Wayne 
出处:http://www.cnblogs.com/dwayne/ 
本文版权归作者和博客园共有,欢迎转载,但未经作者同意请保留此段声明,且在文章页面明显位置给出原文链接。

转载于:https://www.cnblogs.com/wi100sh/p/4308809.html

【转】ubuntu 11.10(32位系统)下编译android源码相关推荐

  1. ubuntu系统下载编译android源码

    在ubuntu系统下编译android需要注意的事项: 1. 参考http://source.android.com/中的安装说明. 2. 安装JDK6中碰到的问题可以参考http://hi.baid ...

  2. linux3.10.46源码下载,Ubuntu11.10下编译android源码4.0.3

    1.初始化编译环境 软件需求: Python2.5-2.7,可以http://www.python.org/download/下载(Ubuntu11.10自带). JDK6:编译Gingerbread ...

  3. android .9编译,在Ubuntu 9.04下编译Android源码

    一直都是刷官方的版本,准备自己编译一下刷机. 首先是下载,Android的源码是托管在Linux Kernel的源码站点,所以版本工具是git.关于git的使用和安装请见我的另一篇文章<在Ubu ...

  4. Mac下编译Android源码,并导入IntelliJ IDEA进行源码阅读

    macOS High Sierra 版本 10.13.4 Xcode 9.3 aosp分支:android-8.1.0_r20 准备编译环境 具体参考官方文档 安装 jdk8u45 or newer ...

  5. mac下编译android源码避坑指南(新)

    截至目前mac环境下android源码编译最新避坑指南 避坑方法 配置(不说配置的都是耍流氓) 下载 编译 烧录 注意事项 避坑方法 源码.SDK.机型版本一定要清楚,有些特殊的版本需要特殊的方法,官 ...

  6. Ubuntu10.10 32位系统下moses统计机器翻译系统使用命令记录

    准备语料 /disknew/zw/moses/work/corpus translated.ench 1035224句已分词 数据预处理 过滤掉长句子 /tools/moses-scripts/scr ...

  7. ubuntu 11.10下载和编译Android源码

    ubuntu 11.10下载和编译Android源码 由衷感谢网上的各个博主的文章,给了小弟我莫大的帮助.这里呢,小弟也把自己的经历记录下来,以供大家参考^^.这篇应该算是零基础.从无到有的流程介绍了 ...

  8. python3.7 win10 64位系统下用pyinstaller打包的程序在32位系统下无法运行

    问题背景: 在64位的win10系统下,用python 3.7.4 写了个定时报警的小玩意儿,主要用到了pyaudio模块,写完之后,使用pyinstaller打包成.exe文件,在其他64位的电脑下 ...

  9. 安卓9.0刷linux,Ubuntu系统下编译Android 9.0系统

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 前言 在Ubuntu系统下编译Android系统.哎呀不知道是不是换了新电脑的缘故,这次编译居然从安装JDK和配置环境下 ...

最新文章

  1. Java泛型深入题目
  2. vs2010 SQL Server Compact 3.5出错
  3. 线程在Linux中的实现
  4. TMG2010 之创建访问规则
  5. 蔡先生论道大数据十九:王羲之与大数据
  6. Apache Beam发布第一个稳定版本
  7. [C# 项目实战]: 制作一个备忘录(经典)
  8. 李开复评价马斯克:他真正的目的是把人变成半机械人
  9. Jmeter Web 性能测试入门 (四):一个小实例带你学会 Jmeter 脚本编写
  10. 关于MultiActionController异步Ajax,post;
  11. [转载] Python-科赫雪花(科克曲线)
  12. HP P2000 G3阵列故障经历
  13. OverFeat,分类、定位、检测
  14. 学科03:工程学重要模型
  15. yy安全中心官网首页登录html,YY安全中心
  16. WPS个人版如何启用VBA(宏)
  17. 智合同丨企业数智化转型,AI技术起到了什么作用?
  18. OSChina 周二乱弹 —— 春节假期已经完全结束
  19. 玫瑰编程--python
  20. 分享!史上最全的STM32库....

热门文章

  1. 【若依(ruoyi)】表格实现tooltip
  2. 【CMD】管道符(|)
  3. html高德地图api使用教程,高德地图API如何使用?
  4. 计算机课题推荐人意见,课题推荐人意见怎么写
  5. 矩阵迹的性质_矩阵(含逆)的迹、行列式关于矩阵自身的导数计算与Maple验证...
  6. 戴尔电脑 linux ssh,使用SSH管理Dell iDRAC远程控制卡
  7. button标签设置隐藏和显示_离职后我隐藏一张工作表,老板找了一天没找到
  8. dropout理解(三)
  9. Apache Flink 零基础入门(十九)Flink windows和Time操作
  10. mysql写入数据乱码问题的解决