ubuntu12.04编译Android 4.0.3 Source+Kernel记

Mac OS X Lion下编译Android Source错误连连,无奈还得用Ubuntu,最近ubuntu发布了LTS版本12.04,于是乎就用12.04了。由于Mac OS本身就源于BSD Unix,装ubuntu多系统有点浪费硬盘,就用虚拟机VMware Fusion装了ubuntu。

一、增大虚拟硬盘
但是麻烦又来了,VMware Fusion认分给ubuntu的最大虚拟硬盘空间只有20G,而Android官网上说,“The source download is approximately 6GB in size. You will need 25GB free to complete a single build,and up to 90GB (or more) for a full set of builds”,于是还得增大虚拟硬盘的空间。方法如下:1、虚拟机->设置->硬盘,然后将磁盘大小改到你想要的大小,这里我的是120G。

2、将新增的部分格式化。
这里我在ubuntu里直接用了GParted这个工具,你可以使用如下命令安装:

  • sudoapt-getinstallgparted
  • 剩下的操作就简单了,需要将未格式化的部分格式化为ext4格式,然后挂在就行了。其实就相当于你原先只有C盘的Windows增添了一个D盘。

    二、设置编译环境
    解决了空间的问题,就需要按照Android官网上的教程一步一步做了。在ubuntu12.04下,只需三步:
    1、安装依赖包,其实就是官网上那一步:

  • sudoapt-getinstallgit-coregnupgflexbisongperfbuild-essential
  • zipcurllibc6-devlibncurses5-dev:i386x11proto-core-devlibx11-dev:i386
  • libreadline6-dev:i386libgl1-mesa-dev:i386g++-multilibmingw32openjdk-6-jdktofrodos
  • python-markdownlibxml2-utilsxsltproczlib1g-dev:i386

  • 2、安装sun-java
    按照官网上说的,openjdk编译有问题,所以必须得安装sun官方的JDK。先从sun官网上下载JDK,2.3或者更新的版本用java6,2.2及以前的版本用java5。我们的版本是4.0.3,所以应该下载jdk6,这里我们用的是jdk-6u22-linux-i586.bin。先将jdk-6u22-linux-i586.bin copy到/opt,然后安装即可。

  • cpjdk-6u22-linux-i586.bin/opt
  • cd/opt
  • ./jdk-6u22-linux-i586.bin

  • 然后修改环境变量:

  • sudovim/etc/environment
  • //将/opt/jdk1.6.0_22/bin:/opt/jdk1.6.0_22/lib:/opt/jdk1.6.0_22添加到PATH最前面,结果类似于
  • PATH="/opt/jdk1.6.0_22/bin:/opt/jdk1.6.0_22/lib:/opt/jdk1.6.0_22:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"


  • 注意:必须把路径加载最前面,以防止系统使用openjdk,或者你把openjdk卸载也行。
    3、将认的gcc4.6换成gcc4.4,太高的gcc版本导致出现各种错误,比如error: “_FORTIFY_SOURCE” redefined [-Werror]。

  • sudoapt-getinstallgcc-4.4
  • sudoapt-getinstallg++-4.4
  • cd/usr/bin
  • sudoln-sgcc-4.4gcc
  • sudoln-sg++-4.4g++

  • 三、下载编译
    剩下的就是下载Android Source,这个按官网上照做就行,可以参照前面的一篇博客。编译源代码

  • .build/envsetup.sh
  • lunchfull_x86-eng
  • make-j8

  • 那么怎么下载Android内核呢?我的测试机为Nenux S,因此以S为例:
  • gitclonehttps://android.googlesource.com/kernel/samsung.git
  • //查看版本
  • gitbransh-a
  • //这里我选择了remotes/origin/android-samsung-3.0-ics-mr1
  • gitcheckout-bandroid-samsung-3.0-ics-mr1origin/android-samsung-3.0-ics-mr1

  • 最后编译内核,按照官网说的做就行。
  • //设置交叉编译工具路径,具体看你把prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin放哪了
  • exportPATH=$(pwd)/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin:$PATH
  • exportARCH=arm
  • exportSUBARCH=arm
  • exportCROSS_COMPILE=arm-eabi-
  • makeherring_defconfig
  • make
  • 相关文章

    目录前言一、创建Hadoop用户二、更新apt和安装Vim编辑器三、...
    原文连接:https://www.cnblogs.com/yasmi/p/5192694.html ...
    电脑重启后,打开VirtualBox,发现一直用的虚拟机莫名的消失...
    参见:https://blog.csdn.net/weixin_38883338/article/deta...
    Ubuntu 18.04 LTS 已切换到 Netplan 来配置网络接口。Netpla...
    介绍每个 Web 服务都可以通过特定的 URL 在 Internet 上访问...