.

.

.

.

.

在学校里是用 Redhat 6.4 编译的 Android 4.2.2 很顺利,把源码包拷贝到笔记本上的 Ubuntu 14.04 上再编译遭遇了各种坑,所以便有了这篇博客记录解决每一个坑的过程。所幸这些坑解决起来还不算复杂,稍微 Google 一下就找到了解决方案。

1.首先是安装 JDK 和 arm-linux-gcc 工具链,这两步只是解压缩之后配置环境变量就行了,所以这里就不再赘述了。
 注意 JDK 必须采用 1.6 版本的,据说 android 4.x 都需要使用标准的 JDK 1.6 编译,也就是说 OpenJDK 是不行的,必须用 Sun 的 JDK,这一点我没有亲测过。

2.安装 gperf,我这里用的是 3.0.4,采用源码编译安装。

[yuhuashi@local android]$ tar xvzf gperf-3.0..tar.gz
[yuhuashi@local android]$ cd gperf-3.0./
[yuhuashi@local gperf-3.0.]$ ./configure
[yuhuashi@local gperf-3.0.]$ make -j4
[yuhuashi@local gperf-3.0.]$ make install
[yuhuashi@local android]$ man gperf

OK,如果没有报错的话,那么恭喜你第二步成功了。

3.接下来便进入正题了,开始编译 android 源码,版本是 4.4.2。

因为是在 Tiny4412 开发板上运行,所以代码包可能被修改过,具体有没有被修改过我也不知道,因为还没有研究过 android 移植,暂时先把步骤记录下来。

[yuhuashi@local android]$ tar xvf android-4.2.2_r1-fs-.tar.gz
[yuhuashi@local android]$ cd android-4.2.2_r1/

设置环境变量

[yuhuashi@local android-4.2.2_r1]$ source setenv

选择编译适用的平台

[yuhuashi@local android-4.2.2_r1]$ lunch

发现出现了一串"无法找到 bison 命令"的错误提示,于是安装 bison

[yuhuashi@local android-4.2.2_r1]$ sudo apt-get install bison

注意 千万不要手贱把 bison++ 也装上了,否则编译的时候会出现一个 double free 的错误!

接下来要开始编译了:    ====前方高能预警,请无关人员立即撤离,关闭所有非必要运行的程序,并确保散热器正常工作!!!====

[yuhuashi@local android-4.2.2_r1]$ make -j4

过程中出现了 Switch.pm 的错误,具体的错误信息没有记录下来,如果各位也遇到了同样的错误,make 会自动停止,所以只写一下解决的方法吧。

其实只需要安装一下 perl 的 switch 库即可:

sudo apt-get install libswitch-perl

安装好 switch 库后重新 make -j4 继续编译。

过了一会儿出现了一个这样的错误:

byteswap.h:22:3: error: #error "Never use <bits/byteswap.h> directly; include <byteswap.h> instead.

解决办法是安装 GCC 的 multilib 库,然后 make -j4 继续编译。

sudo apt-get install gcc-multilib

OK,所有的坑都解决了,经过将近2个小时的高速运转之后终于见到了如下提示:

Creating filesystem with parameters:
Size: 685768704
Block size: 4096
Blocks per group: 32768
Inodes per group: 6976
Inode size: 256
Journal blocks: 2616
Label:
Blocks: 167424
Block groups: 6
Reserved block group size: 47
Created filesystem with 1104/41856 inodes and 52043/167424 blocks
+ '[' 0 -ne 0 ']'
Running: simg2img out/target/product/tiny4412/obj/PACKAGING/systemimage_intermediates/system.img out/target/product/tiny4412/obj/PACKAGING/systemimage_intermediates/unsparse_system.img
Running: e2fsck -f -n out/target/product/tiny4412/obj/PACKAGING/systemimage_intermediates/unsparse_system.img
e2fsck 1.41.14 (22-Dec-2010)

Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
out/target/product/tiny4412/obj/PACKAGING/systemimage_intermediates/unsparse_system.img: 1104/41856 files (0.0% non-contiguous), 52043/167424 blocks
Install system fs image: out/target/product/tiny4412/system.img
out/target/product/tiny4412/system.img+ maxsize=700123776 blocksize=4224 total=203674048 reserve=7075200

如果你也看到了类似的提示消息,恭喜你成功了!

编译的结果在out文件夹下。

4.接下来生成刷机需要的 img 镜像文件

不过这需要依赖 UBoot 的一个工具:mkimage,如果你之前编译过 UBoot,可以在 UBoot 的 tools 目录下找到这个程序,也可以通过 apt-get 来安装它:

[yuhuashi@local android-4.2.2_r1]$ sudo apt-get install u-boot-tools

有了这个工具我们便可以制作 img 镜像文件了

[yuhuashi@local android-4.2.2_r1]$ ./gen-img.sh

OK,看看是不是在当前目录下出现了下面这几个文件:

[yuhuashi@local android-4.2.2_r1]$ ls
system.img
userdata-16g.img
userdata-4g.img
userdata-8g.img
userdata.img
ramdisk-u.img
......
隐藏了若干不相关文件

如果出现了这几个文件,那么说明刷机必要的镜像文件我们已经有了,恭喜你,还差一个内核就可以在开发板上烧写系统了。

现在只是编译了 android 本身,内核还没有编译,明天继续记录编译内核的过程。

Ubuntu 14.04 编译 Android 4.2.2 for Tiny4412的更多相关文章

  1. [原]Ubuntu 14.04编译Android Kernel

    如何编译android kernel参考官方文档:https://source.android.com/source/building-kernels.html   在Ubuntu 14.04上编译a ...

  2. 在ubuntu 14.04 编译android 2.3.1 错误解决办法

    首先必须降低gcc版本: sudo apt-get install gcc-4.4sudo apt-get install g++-4.4sudo rm -rf /usr/bin/gcc /usr/b ...

  3. Ubuntu 14.04 下 android studio 安装 和 配置【转】

    本文转载自:http://blog.csdn.net/xueshanfeihu0/article/details/52979717 Ubuntu 14.04 下 android studio 安装 和 ...

  4. ubuntu 14.04编译安装xen4.4总结

    1. 安装环境 操作系统:ubuntu14.04 xen版本:xen4.4 2. 依赖包的安装 在安装xen之前先进行依赖包的安装,在不停得尝试之后,总结出以下需要安装的依赖包. sudo apt-g ...

  5. Ubuntu 14.04 设置Android开发环境

    准备Java环境 本文仅仅安装sdk,不安装什么IDE,由于我仅仅须要命令行模式开发就可以. 首先安装openjdk 1.6.然后安装ant.这个不赘述. 下载SDK 从这里下载SDK for Lin ...

  6. Ubuntu 14.04 编译安装 boost 1.58

    简介 Boost is a set of libraries for the C++ programming language that provide support for tasks and s ...

  7. Ubuntu 14.04 编译安装 husky

    简介 Husky是一个大数据分布式开发框架,用C++开发,因为粗粒度(coarse-grained)平台(如Spark,Hadoop,Flink)MR耗时太大,然后细粒度(fine-grained)平 ...

  8. ubuntu 14.04 编译安装 nginx

    下载源码包 nginx 地址:http://nginx.org/en/download.html  下载nginx 1.4.7 编译前先安装两个包: 直接编译安装会碰到缺少pcre等问题,这时候只要到 ...

  9. Ubuntu 14.04 编译newLISP 10.6.0

    1. 确保安装了gcc4.8.2 2. 安装须要的库: apt-get install libreadline6 libreadline6-dev 3. 下载并解压newLISP源码,这个不多说了,去 ...

随机推荐

  1. 【js】在js中加HTML注释标签的原因?

    <script type="text/JavaScript"> <!-- js代码 //--> //就是这句,为什么还要在-->前加上js注释 < ...

  2. perl进程管理一例

    #!/usr/bin/perl -w use strict; use warnings; use DBI; #### # 这里进行服务器任务管理 ## #字符串映射函数 our %actions = ...

  3. ORA-01917: user or role 'PDB_DBA' does not exist

    在使用seed PDB创建新的PDB的时候,报了以下错误提示: SQL> create pluggable database pdb2 admin user admin1 identified ...

  4. Activity的onPause()、onStop()和onDestroy()里要做的事情

    onPause(): 当系统调用你的activity中的onPause(),从技术上讲,那意味着你的activity仍然处于部分可见的状态,当时大多数时候,那意味着用户正在离开这个activity并马 ...

  5. 还没被玩坏的robobrowser(8)——robobrowser的实现原理

    背景 学习使用工具实际上不难,不过我们应该通过阅读工具源码来提升自己的水平. 多读代码,读好代码.很不错,robobrowser的代码简单易懂,值得学习. 预备知识 源码地址 一起其实是从browse ...

  6. (面试题)如何查找Oracle数据库中的重复记录

    今天做了个面试题:查找Oracle数据库中的重复记录,下面详细介绍其他方法(参考其他资料) 本文介绍了几种快速查找ORACLE数据库中的重复记录的方法. 下面以表table_name为例,介绍三种不同 ...

  7. 怎么在eclipse中查到这个类用的是哪个jar的类和Eclipse 编译错误 Access restriction:The type *** is not accessible due to restriction on... 解决方案

    找到了一个办法,你先按F3,然后点击Change Attached Source..按钮,在弹出的框里有个路径,我的路径是D:/SNFWorkSpace/JAR/~importu9.jar,然后你去引 ...

  8. Apache Hadoop下一代MapReduce框架(YARN)简介 (Apache Hadoop NextGen MapReduce (YARN))

    英文看着头大,先试着翻译一下. E文原文:http://archive.cloudera.com/cdh5/cdh/5/hadoop/hadoop-yarn/hadoop-yarn-site/YARN ...

  9. ARM:移动GPU往PC GPU效能迈进

    行动装置的热潮持续不退,各大手机制造商除了想尽办法推出外型酷炫的行动装置设备来吸引消费者的目光之外,更在行动应用处理器玩起多核心的「核」战争,无非是希望能够带给消费者更优异的效能新体验.然而,随着消费 ...

  10. [LeetCode] Paint House I & II

    Paint House There are a row of n houses, each house can be painted with one of the three colors: red ...