编译android源码,首先当然是下载源码。

在source.android.com中可以方便的找到下载流程。

虽然有现成的方法(GIT&REPO)不过最好还是先熟悉一下这两个工具使用方法最好,否则也会走不少弯路。这里推荐Li Yanrui写的《git使用指南》。

好了,一步一步

$git init

$repo init -u git://android.git.kernel.org/platform/manifest.git -b eclair   ---------下载  android-2.1版本

$repo sync --------- 第一次最好使用repo sync下载完所有的文件

正式开始编译,料想不会太复杂吧

$ source build/envsetup.sh

$ lunch

选 simulator  ----------我是在emulator上跑的android

$ make

....

编译完成之后在 out/target/.../generic/目录下生成了  ramdisk.img system.img userdata.img

$ emulator -system system.img

-data userdata.img

-ramdisk -ramdisk.img

Q&A 下面仅仅记录我在编译之中遇到的问题

1. android根据版本推出的先后选择了 java1.5 和  java1.6, 我是直接选择的java 1.6

因此需要修改 build/core/main.mk中的关于java版本判断的部分 改 1.5 -> 1.6

2. 编译了一段时间之后出现错误

提示 将警告当成了错了

解决办法  将报错位置的编译选项 -Werror 删除

下面还遇到无法识别的选项 -Wno-override-init  同样删除

3.  GLIBC_2.11 not found

解决办法  http://blog.csdn.net/zhenyongyuan123/archive/2010/12/16/6079717.aspx

4. issue "You are attempting to build on a 32-bit system"

How to fix: 
$ vim build/core/main.mk 
change 
ifneq (64,$(findstring 64,$(build_arch))) 
to 
ifneq (i686,$(findstring i686,$(build_arch))) 
$(warning ************************************************************) 
$(warning You are attempting to build on a 32-bit system.) 
$(warning Only 64-bit build environments are supported beyond froyo/2.2.) 
$(warning ************************************************************) 
$(error stop) 
endif

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

change 
LOCAL_CFLAGS += -m64 
LOCAL_LDFLAGS += -m64 
to 
LOCAL_CFLAGS += -m32 
LOCAL_LDFLAGS += -m32

...

P.S.  交叉编译android kernel

下载android kernel源码

$ git clone git://android.git.kernel.org/kernel/common.git  kernel-common

$ cd kernel-common

$ make ARCH=arm goldfish_defconfig .config

$ make ARCH=arm CROSS_COMPILE=PREBUILT_PATH/linux-x86/toolchain/arm-esbi/bin/

......

OBJCOPY arch/arm/boot/zImage

Kernel: arch/arm/boot/zImage is ready

这个编译过程基本很顺利,没有遇到什么大问题
使用编译的内核
$ emulator -avd <avd name>  -kernel  ZIMAGE_PATH/zImage  
最后是运行起来的模拟器,我们查看手机信息
显示  Android Version 为AOSP
Kernel Version 为 2.6.27-dirty  还附有xxx@localhost    “xxx”是我的linux id

编译android源码及遇到的问题相关推荐

  1. 《深入解析Android 虚拟机》——第1章,第1.3节编译Android源码

    本节书摘来自异步社区<深入解析Android 虚拟机>一书中的第1章,第1.3节编译Android源码,作者 钟世礼,更多章节内容可以访问云栖社区"异步社区"公众号查看 ...

  2. 编译Android源码

    通过参考网上的相关资料,我编译Android源码的步骤如下: 1 我的系统是Ubuntu 8.04 2 系统上必须安装以下工具(摘自网上的资料):    sudo apt-get install bu ...

  3. (转)编译Android源码的全过程

    在网上看到一篇编译android源码的文章,照着做挺行的, 通过参考网上的相关资料,我编译Android源码的步骤如下: * 1 我的系统是Ubuntu 8.04      * 2 系统上必须安装以下 ...

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

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

  5. Ubuntu12.04编译Android4.0.1源码全过程-----附wubi安装ubuntu编译android源码硬盘空间不够的问题解决

    Ubuntu12.04编译Android4.0.1源码全过程-----附wubi安装ubuntu编译android源码硬盘空间不够的问题解决 参考文章: (1)Ubuntu12.04编译Android ...

  6. 编译Android源码致命错误解决方案

    编译Android源码致命错误解决方案 参考文章: (1)编译Android源码致命错误解决方案 (2)https://www.cnblogs.com/cliuwei/p/5605789.html 备 ...

  7. android:自己动手编译Android源码(超详细)

    自己动手编译Android源码(超详细) 涅槃1992 2016.06.20 02:12* 字数 4330 阅读 86819评论 89喜欢 339赞赏 7 在Android Studio代码调试一文中 ...

  8. win10最新下载编译Android源码的简易方法分享(已亲测)

    win10最新下载编译Android源码的简易方法分享(已亲测) 准备至少150G的硬盘空间 win+R 输入control 打开程序与功能-启用或关闭Windows功能 勾选"适用于Lin ...

  9. ubuntu 20.04编译Android源码

    一直以来想编译android源码,趁闲编译了下,ubuntu版本:20.04,android源码版本:android-9.0.0_r30.总体还比较顺畅,中间遇到了一些报错,在文中也有记录,详情见下文 ...

  10. 在Virtual Box的shared folder中编译android源码。

    一些诡异的选择会带来诡异的问题,比如android源码sync到一个shared folder里面,然后在这个Folder里面编译android源码. 问题:在SharedFolder下使用make ...

最新文章

  1. 个人站点渲染和跳转过滤功能
  2. 【转载】windows mobile 上隐藏和关闭X以及OK的处理
  3. idea 2019.2 版本更新(最顶部从白色边框变为黑色边框)
  4. maven java archetype_使用Maven Archetype创建Java项目模板
  5. 北斗导航 | Modified Tropospheric:对流层延迟计算(matlab代码)
  6. 在 SharePoint 2013 中选择正确的 API 集
  7. Kubernetes:全面了解 Deployment
  8. class12_pack_grid_place 放置位置
  9. delphi chart 曲线实时_发展学生曲线跑能力的体育游戏及运用研究
  10. redis查询所有key命令_三歪推荐:Redis常见的面试题
  11. spring 的singleton 和prototype的区别和应用场合
  12. Mysql InnoDB事务
  13. PyTorch报错“/.../Loss.cu: ... [59,0,0] Assertion input_val >= zero input_val <= one failed.”
  14. undefined reference to 'modbus_new_tcp'
  15. 《战术篇》阵型的设定与编辑,战术命令详解
  16. java实现飞机大战小游戏(源码+注释)
  17. 计算机组成与结构1800题,最新版数据结构1800题含完整答案详解
  18. Ext-Ext4文件系统_日志JBD2
  19. 联想微型计算机m8000u配置,联想的产品介绍-20210412075714.pdf-原创力文档
  20. Android 图文数据JSON解析,金山词霸每日一句API的调用

热门文章

  1. 怎么看xp计算机配置文件,WinXP怎样查看电脑使用记录?查看电脑使用痕迹的方法...
  2. PPT分屏放映操作小技巧
  3. 无线蓝牙耳机买哪个牌子好?2022年音质最好的蓝牙耳机
  4. Java基础14 集合(重要)四种遍历方式 list 并发异常 set
  5. 中国史上有名的十大美女
  6. Python基础教程——2.1python条件判断语句
  7. 旋转or跳跃?基于互联网视频的人体运动捕捉
  8. Python中将非数值的类别转换为数字
  9. Java Sleep 类以及使用方法
  10. 我在冬奥会认识了各国小伙伴,怎么样才能够和他们保持联系?