本文转载自:http://blog.csdn.net/beijiwei/article/details/51055369

版权声明:本文为博主原创文章,未经博主允许不得转载。

  1. /**************************************************************************************
  2. * Function     : Tiny4412 开发板 编译环境搭建
  3. * Create Date  : 2016/04/04
  4. * Author       : NTSK13
  5. * Email        : beijiwei@qq.com
  6. * Copyright    : 欢迎大家和我一起交流学习,转载请保持文章的完整性。
  7. 任何单位和个人不经本人书面允许不得用于商业用途。
  8. ***************************************************************************************

我使用的是VirtualBox +Ubuntu

VirtualBox 版本 :   5.0.16 r105871 (使用最新版即可)

Ubuntu  :   ubuntu-15.10-desktop-amd64.iso

在安装的时候安装语言选择 English,不建议选择中文,方便开发。

在安装的时候,虚拟机不要联网。

配置用户的时候设定一个密码,比如1234.

记住这个密码,以后设置root登录的时候会用到这个密码。

建议有空间的选择70GB以上的空间,、我的62GB,编译完之后就剩余1GB 左右了。

以下是配置:

<1> 以root用户登录

 

1、先解除root锁定,为root用户设置密码

打开终端输入:sudo passwd root

 

Password: <--- 输入你当前用户的密码,就是之前安装Ubuntu的那个密码1234

Enter new UNIX password: <--- 新的Root用户密码

Retype new UNIX password: <--- 重复新的Root用户密码

passwd:已成功更新密码

 

2设置root自动登录

  sudo gedit /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf

 

文件内容最终为:

[SeatDefaults]

autologin-user=root   #启动后以root身份自动登录

greeter-session=unity-greeter

user-session=ubuntu

在刚修改完root权限自动登录后,发现开机出现以下提示:

Error found when loading /root/.profile

stdin:is not a tty

…………

解决方法:在终端中用命令gedit    /root/.profile,打开文件后找到“mesg n”,

将其更改为“tty -s && mesg n”。

<二>虚拟机窗口大小问题 和共享文件夹的设置

这个需要安装Guest Additions(增强包) 在VirtualBox 安装目录下有这个iso

1.安装:VirtualBoxGuestAddition.iso文件

可以在VirtualBox的安装目录下找到。

直接在虚拟机的主菜单上点击“安装增强功能”,Unbuntu会自动挂载一个iso。

打开终端,cd /media/cdrom0目录下,运行sudo ./VBoxLinuxAdditions-x86.run。待完整的出现下面的信息后表示安装成功了。

Verifying archive integrity... All good.

Uncompressing VirtualBox 3.0.4 Guest Additions for Linux

installation......................................................................................................

..................................................................................................................

......

VirtualBox 3.0.4 Guest Additions installation

Building the VirtualBox Guest Additions kernel module...

Building the shared folder support kernel module...

Building the drm support kernel module...

Installing the VirtualBox Guest Additions...

Successfully installed the VirtualBox Guest Additions.

You must restart your guest system in order to complete the installation.

装完重启之后,鼠标就可以在Host主机系统和虚拟系统之间自由移动而不需按右边Ctrl键切换了,而且虚拟系统的窗口可以拉动,

位置合适的话Ubuntu桌面会自动全屏显示。如果开启了与Host系统共享剪贴板的话,还可以在Host系统与虚拟系统之间进行复制/剪切和粘贴。

2.设置共享文件夹

重启完成后点击"设备" ->分配数据空间,添加一个共享文件夹,选项固定和临时是指该文件夹是否是持久的。

共享名可以任取一个自己喜欢的,比如"vboxshd",尽量使用英文名称。

D:\Vbox\shd ,这个是windows 的目录,以后共享文件可以放在这个路径下。

3.挂载共享文件夹

若要使用共享文件夹功能,必须安装linux guest additions,安装增强功能,.如果你不想每一次手动挂载,可以使用以下方法,在系统启动时执行挂接脚本,成功自动挂接

#  gedit /etc/rc.local

1. 在文件的最后加入上面手动挂接的命令:

mount -t vboxsf   vboxshd   /mnt/shd    // vboxshd  是共享数据空间的名称

2.  cd /mnt/

mkdir shd

注意:一定要在mount之前,确定已经加载了vboxsf模块。

如果不加载的话,会出现mount出错的情况。

/sbin/mount.vboxsf: mounting failed with the error: No such device

Ubuntu启动后 一般会在 /media/ 目录下挂载共享文件夹。

<三>添加国内 Ubuntu 源

如果不添加,接下来安装 Android 编译需要的工具的时候,有几个无法安装。

cp /etc/apt/sources.list /etc/apt/sources.list_bak

gedit /etc/apt/sources.list

在最后加上:

deb http://mirrors.163.com/ubuntu/ wily main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ wily-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ wily-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ wily-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ wily-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ wily main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ wily-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ wily-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ wily-proposed main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ wily-backports main restricted universe multiverse

之后,sudo apt-get update

加其他国内源也是一样的方法。

<四>安装android源代码编译所需的软件包

Ubuntu 默认安装后是不带软件开发相关的组件的,因此需要先安装一系列的软件开发组件, 
请先保存你的电脑能正常访问互联网络。  
        
      第一步,先从Tiny4412 光盘中拷贝  tools   目录下的  ubuntu   目录到tmp  。

第二步,安装jdk6 :  
      # cd /tmp/ubuntu/jdk6/  
      # chmod 755 install-sun-java6.sh    
      # ./install-sun-java6.sh    
        
        
      第三步,通过执行install-devel-packages.sh 脚本,联网安装软件开发相关的软件包:  
      # cd /tmp/ubuntu/  
      # chmod 755 install-devel-packages.sh  
      # ./ install-devel-packages.sh  
      中途会询问是否下载软件包,输入Y  回车即可。

最后一步,Android5.0.2 的编译 需要使用的是openjdk-7-jdk,

但是,friend 官方没提这个事情,坑。。。

apt-get install openjdk-7-jdk

之后:执行./ install-openjdk7,sh

附送一个shell 脚本 install-openjdk7,sh 来设置 Javajdk:

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

#!/bin/sh

# Update symbolic links for Java
update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/java-7-openjdk-amd64/bin/java" 1
update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/java-7-openjdk-amd64/bin/javac" 1
update-alternatives --install "/usr/bin/javadoc" "javadoc" "/usr/lib/jvm/java-7-openjdk-amd64/bin/javadoc" 1
update-alternatives --install "/usr/lib/mozilla/plugins/libjavaplugin.so" "mozilla-javaplugin.so" "/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/libnpjp2.so" 1
update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/lib/jvm/java-7-openjdk-amd64/bin/javaws" 1
update-alternatives --install "/usr/bin/jar" "jar" "/usr/lib/jvm/java-7-openjdk-amd64/bin/jar" 1

# Choose the javayou installed as default 
update-alternatives --config java
update-alternatives --config javac
update-alternatives --config javadoc
update-alternatives --config mozilla-javaplugin.so
update-alternatives --config javaws
update-alternatives --config jar

# Verify installation
java -version
javac -version

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

<五>安装交叉编译器GCC

 

使用的是官方的 arm-linux-gcc-4.5.1  (和Mini210  相同),它在编译内核时会自动采用 armv7 
指令集,支持硬浮点运算,下面是安装它的详细步骤。


      Step1:将光盘Android  目录中的arm-linux-gcc-4.5.1-v6-vfp-YYYYMMDD.tgz 复制到/tmp  目 
录,然后进入到该目录,执行解压命令:  
      #cd /tmp  
      #tar xvzf arm-linux-gcc-4.5.1-v6-vfp-YYYYMMDD.tgz    –C /      
      注意:C 后面有个空格,并且C 是大写的,它是英文单词“Change ”的第一个字母,在此 
是改变目录的意思。  
      执行该命令,将把arm-linux-gcc 安装到/opt/FriendlyARM/toolschain/4.5.1  目录

 

Step2:把编译器路径加入系统环境变量,运行命令  
       #gedit   ~/.bashrc  
       编辑~/.bashrc            文件,注意“bashrc ”前面有一个“. ”,修改最后一行为 export  
PATH=$PATH:/opt/FriendlyARM/toolschain/4.5.1/bin ,注意路径一定要写对,否则将不会有效。  
       保存退出。  

重新登录系统 ,使以上设置生效,在命令行输入  
arm-linux-gcc –v ,会出现GCC 相关信息,这说明交叉编译环境已经成功安装

 

<六>解压安装Android  内核源代码  并编译:

 在工作目录/opt/FriendlyARM/tiny4412/android 中执行:  
      #cd /opt/FriendlyARM/tiny4412/android  
      #tar xvzf /tmp/Android-5.0.2/linux-3.0.86-YYYYMMDD.tgz  
      将创建生成linux-3.0.86  目录,里面包含了完整的内核源代码  
      说明:YYYYMMDD 是发行更新日期标志,请以光盘中实际日期尾缀为准。  
        
      (2)解压安装Android 源代码包  
      在工作目录/opt/FriendlyARM/tiny4412/android 中执行:  
      #cd /opt/FriendlyARM/tiny4412/android  
      #tar xvzf /tmp/Android/Android-5.0.2/android-5.0.2-fs-YYYYMMDD.tar.gz  
      将创建android-5.0.2  目录。  
      说明:YYYYMMDD 是发行或更新日期标志,请以光盘中实际日期尾缀为准。  
        ps: android-5.0.2  源码放在那里都无所谓,因为编译工具都加入到 环境变量里边了。

我把源码放在了 /root/aa\文件夹下,fandroid目录中,


android5 就是android5.0.2 源码目录,kernel 是Linux3.0.86 内核 源码 目录。

注意还有两个 编译脚本 bandroid.sh 和 bernel.sh 分别是 android 和kernel 的编译脚本.

编译的时候直接 

cd /home/fandroid

./bandroid.sh  和 ./bkernel.sh 就OK了。

这两个文件记得加X权限。

 

自己写的 bandroid.sh:

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

set -e -o pipefail
exec > >(tee android.log)
exec 2>&1

cd ./android5
. setenv
make -j4
./gen-img.sh

rm -rf /media/sf_vboxshd/bin/
mkdir /media/sf_vboxshd/bin/
cd ..
mv ./android5/*.img /media/sf_vboxshd/bin/
mv ./kernel/arch/arm/boot/zImage /media/sf_vboxshd/bin/

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

bkernel.sh

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

set -e -o pipefail
exec > >(tee kernel.log)
exec 2>&1

cd ./kernel
cp tiny4412_android_defconfig  .config
make -j4

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

编译 android 的时候 可能会遇到如下问题:

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Error: out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar: unknown package name of class file com/slsi/sec/android/HdmiService.class
target Symbolic: libgui (out/target/product/tiny4412/symbols/system/lib/libgui.so)
target Symbolic: libskia (out/target/product/tiny4412/symbols/system/lib/libskia.so)
out/target/common/obj/PACKAGING/public_api.txt:20: error 5: Added public field android.Manifest.permission.BACKUP
out/target/common/obj/PACKAGING/public_api.txt:81: error 5: Added public field android.Manifest.permission.INVOKE_CARRIER_SETUP
out/target/common/obj/PACKAGING/public_api.txt:105: error 5: Added public field android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE
out/target/common/obj/PACKAGING/public_api.txt:115: error 5: Added public field android.Manifest.permission.RECEIVE_EMERGENCY_BROADCAST

******************************
You have tried to change the API from what has been previously approved.

To make these errors Go away, you have two choices:
   1) You can add "@hide" javadoc comments to the methods, etc. listed in the
      errors above.

2) You can update current.txt by executing the following command:
         make update-api

To submit the revised current.txt to the main Android repository,
      you will need approval.
******************************

build/core/tasks/apicheck.mk:57: recipe for target 'out/target/common/obj/PACKAGING/checkapi-current-timestamp' failed
make: *** [out/target/common/obj/PACKAGING/checkapi-current-timestamp] Error 38
make: *** Waiting for unfinished jobs....

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

解决方法:进入 源码目录

cd  /root/fandroid/android5/

make update-api

之后 cd ..

./bandroid.sh

重新编译即可。

 

《七》 配置和编译Linux内核

编译Linux3.0.86 内核:  


   
   #cd /opt/FriendlyARM/tiny4412/android/linux-3.0.86  
      #cp tiny4412_android_defconfig .config    ;注意config 前面有个”.”  
        
      你可以执行make menuconfig 对配置进行修改,修改完成后,输出make 进行编译:  
      # make

最后会在arch/arm/boot  目录下生成zImage ,将它替换掉SD 卡images/Android/下的zImage 
烧写到Tiny4412 即可。

使用我的脚本:

cd  /root/fandroid/android5/

./bkernel.sh 

OK

bkernel.sh

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

set -e -o pipefail
exec > >(tee kernel.log)
exec 2>&1

cd ./kernel
cp tiny4412_android_defconfig  .config
make -j4

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

晒一下我编译成功的图:

android开机后的第一个图是官方系统,第二个图是我编译的系统,去掉了 Youtube 等几个 apk。

建议不要使用虚拟机 编译太费时间了,我是 I7 的处理器 +SSD,虚拟机分配了10GB RAM, 完整编译 android 需要2个小时,完整编译 kernel 需要 半个小时。

当然以后单独编译模块会快很多,应该几分钟的事情。

大家酌情使用吧。

Tiny4412 开发板 编译环境搭建【转】的更多相关文章

  1. IoT设备程序开发及编译环境搭建初体验

    引言 Mirai事件一经曝出,立即引领了一轮研究IoT设备的热潮.目前,对Mirai的报告大多只是在对其功能实现上的介绍,却很少提及如何实现IoT设备程序开发的测试环境.本文在对Mirai的源码研究的 ...

  2. STM32F407Discovery开发板使用环境搭建

    差不多4年前买了STM32F407Discovery这块开发板,也用它作为我的毕业设计的一部分,今晚整理一下东西,觉得这么不错的东西应该再次利用起来,做个智能家居系统的一部分什么的也不错,于是,记录一 ...

  3. ubuntu12.04下CKermit与开发板交互环境搭建

    CKermit蛮好的一个调试工具!就像在windows下的telnet,但是还是折腾了一下,现在看来,非常容易,其实我主要是在开发板为正常工作的情况下,以为是CKermit的问题,其实是我开发板开机设 ...

  4. windows下cocos2dx3.0开发环境及Android编译环境搭建

    cocos2dx更新到了3.x版本号,自己一直没有换,如今开发组要求统一换版本号,我就把搭建好开发环境的过程记录下来. 一.Windowns下开发环境搭建 1.  所需工具         1)coc ...

  5. 编译 Linux 3.5 内核烧写 Android 4.2.2 到 Tiny4412 开发板

    . . . . . 昨天已经编译了 Android 4.2.2 的源码,详见<Ubuntu 14.04 编译 Android 4.2.2 for Tiny4412>一文. 今天我们继续剩下 ...

  6. ubuntu12.04下安卓编译环境搭建总结

    前言:      因为工作需要,经常要编译安卓下的动态库,公司有已经搭建好环境的服务器,但是第一自己想自己搭建一下了解一个整个过程,另外,公司的服务器也经常出现问 题,导致编译不了,所以就想自己搭建环 ...

  7. 内容分享-迅为IMX6开发板编译问题及解决方法

    [经验分享]IMX6开发板编译问题及解决方法本文转自迅为IMX6开发板售后讨论群,分享给大家~ 物理主机 win10 64 位专业版.虚拟机 VM12 Pro.开发环境采用迅为提供的开发环境: Ubu ...

  8. 使用Kotlin开发Android应用 - 环境搭建 (1)

    一. 在Android Studio上安装Kotlin插件 按快捷键Command+, -> 在Preferences界面找到Plugins -> 点击Browse repositorie ...

  9. openwrt(一):openwrt源码下载及编译环境搭建

    声明:从网上各位大神的博客学习,整理后记录,非原创. 注:请用非root用户来下载源码 导航: 1. openwrt编译环境搭建 2. openwrt源码下载 3. feeds更新 1. openwr ...

随机推荐

  1. 第三节:EF

    1.删除要进行判空 public ActionResult DelClassMethod(string gId) { //根据gId查询对应条目 var grade = oc.BllSession.I ...

  2. Java基础——接口

    一:接口,英文称作interface,在软件工程中,接口泛指供别人调用的方法或者函数. 在封装与接口中,private关键字封装了对象的内部成员.经过封装,产品隐藏了内部细节,只提供给用户接口(int ...

  3. 用TWaver加载大型游戏场景一例

    游戏中经常会出现一些大型的户外场景,例如一个小镇.一座古城等.通常这种场景中包含了较多的建筑.道路.桥梁等等元素,其3D模型比较大且复杂.在使用TWaver加载时,可使用一些技巧,让加载速度更快.显示 ...

  4. 洛谷——P1349 广义斐波那契数列(矩阵加速)

    P1349 广义斐波那契数列 题目描述 广义的斐波那契数列是指形如$an=p\times a_{n-1}+q\times a_{n-2}$?的数列.今给定数列的两系数$p$和$q$,以及数列的最前两项 ...

  5. 基于虚拟机的centos6.5 搭建本地光盘yum源

    在线yum安装必须要保持服务器能够连入网络并且他下载的还会比较慢因为地址大部分多是国外的下载站.另外yum在线下载的都是比较新的软件包,可能不是很稳定,那么使用yum的本地资源就是光盘里的RPM包,让 ...

  6. stall and flow separation on airfoil or blade

    stall stall and flow separation Table of Contents 1. Stall and flow separation 1.1. Separation of Bo ...

  7. 1031. Hello World for U

    Given any string of N (>=5) characters, you are asked to form the characters into the shape of U. ...

  8. flask——CSRFToken保护

    根据 csrf_token 校验原理,具体操作步骤有以下几步: 1.后端生成 csrf_token 的值,在前端请求登录或者注册界面的时候将值传给前端,传给前端的方式可能有以下两种: 在模板中的 Fr ...

  9. RabbitMQ整合spring----https://www.cnblogs.com/woms/p/7040902.html

    https://www.cnblogs.com/woms/p/7040902.html

  10. type="timestamp"与type="date"区别

    type="timestamp"-----数据库中保存的时间为年月日时分秒 与type="date"---------数据库中保存的时间为年月日