Tiny4412 开发板 编译环境搭建【转】
本文转载自:http://blog.csdn.net/beijiwei/article/details/51055369
版权声明:本文为博主原创文章,未经博主允许不得转载。
- /**************************************************************************************
- * Function : Tiny4412 开发板 编译环境搭建
- * Create Date : 2016/04/04
- * Author : NTSK13
- * Email : beijiwei@qq.com
- * Copyright : 欢迎大家和我一起交流学习,转载请保持文章的完整性。
- 任何单位和个人不经本人书面允许不得用于商业用途。
- ***************************************************************************************
我使用的是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 开发板 编译环境搭建【转】的更多相关文章
- IoT设备程序开发及编译环境搭建初体验
引言 Mirai事件一经曝出,立即引领了一轮研究IoT设备的热潮.目前,对Mirai的报告大多只是在对其功能实现上的介绍,却很少提及如何实现IoT设备程序开发的测试环境.本文在对Mirai的源码研究的 ...
- STM32F407Discovery开发板使用环境搭建
差不多4年前买了STM32F407Discovery这块开发板,也用它作为我的毕业设计的一部分,今晚整理一下东西,觉得这么不错的东西应该再次利用起来,做个智能家居系统的一部分什么的也不错,于是,记录一 ...
- ubuntu12.04下CKermit与开发板交互环境搭建
CKermit蛮好的一个调试工具!就像在windows下的telnet,但是还是折腾了一下,现在看来,非常容易,其实我主要是在开发板为正常工作的情况下,以为是CKermit的问题,其实是我开发板开机设 ...
- windows下cocos2dx3.0开发环境及Android编译环境搭建
cocos2dx更新到了3.x版本号,自己一直没有换,如今开发组要求统一换版本号,我就把搭建好开发环境的过程记录下来. 一.Windowns下开发环境搭建 1. 所需工具 1)coc ...
- 编译 Linux 3.5 内核烧写 Android 4.2.2 到 Tiny4412 开发板
. . . . . 昨天已经编译了 Android 4.2.2 的源码,详见<Ubuntu 14.04 编译 Android 4.2.2 for Tiny4412>一文. 今天我们继续剩下 ...
- ubuntu12.04下安卓编译环境搭建总结
前言: 因为工作需要,经常要编译安卓下的动态库,公司有已经搭建好环境的服务器,但是第一自己想自己搭建一下了解一个整个过程,另外,公司的服务器也经常出现问 题,导致编译不了,所以就想自己搭建环 ...
- 内容分享-迅为IMX6开发板编译问题及解决方法
[经验分享]IMX6开发板编译问题及解决方法本文转自迅为IMX6开发板售后讨论群,分享给大家~ 物理主机 win10 64 位专业版.虚拟机 VM12 Pro.开发环境采用迅为提供的开发环境: Ubu ...
- 使用Kotlin开发Android应用 - 环境搭建 (1)
一. 在Android Studio上安装Kotlin插件 按快捷键Command+, -> 在Preferences界面找到Plugins -> 点击Browse repositorie ...
- openwrt(一):openwrt源码下载及编译环境搭建
声明:从网上各位大神的博客学习,整理后记录,非原创. 注:请用非root用户来下载源码 导航: 1. openwrt编译环境搭建 2. openwrt源码下载 3. feeds更新 1. openwr ...
随机推荐
- Linux命令运行监测和软件安装
监测命令的运行时间 time command $ time sleep 5 real 0m5.003s # 程序开始至结束的时间,包括其它进程占用的时间片和IO时间 user 0m0.001s # 进 ...
- GetArxPath
extern HINSTANCE _hdllInstance;CString GetArxPath(){ CString strArxPath; GetModuleFileName(_hdllInst ...
- 梦想CAD控件打印相关
一.打印设置 在顶部快速访问工具栏单击打印按钮或者直接输入PLOT命令或者点击打印控制的打印设置按钮打开打印对话框.c#代码实现如下: //打印设置 private void Print1() { ...
- Java基础(二)--this关键字及初始化
构造器: 构造器的名称必须和类名完全相同,所以一般方法的"首字母小写"命名规则并不适合构造器 默认构造器: 也叫无参构造器,作用就是创建一个默认对象,如果你不是手写出来,编译器默认 ...
- JavaScipt30(第十个案例)(主要知识点:选中一个数组中间相连部分进行操作的一种思路)
承接上文,第九个案例就不说了,是控制台的一些东西,一般用的很少,了解下就行了,想用的时候再翻api.这是第10个案例: 需要实现的效果是:点击一个checkbox,然后按下shift点击另一个chec ...
- 05Microsoft SQL Server 表创建,查看,修改及删除
Microsoft SQL Server 表创建,查看,修改及删除 创建表 创建普通表 use 数据库名称 go create table 表名称( 列1 ) not null, 列2 ) not n ...
- flipt 一个基于golang 的特性工具开发类库
以前介绍过一个Flagr 的基于golang 的特性功能开发类库(技术雷达推荐),今天看到一个类似也很不错的方案flipt 参考架构 包含的特性 快速,使用golang 编写,同时进行了性能优化 运行 ...
- find命令查找和替换
find命令查找和替换 语法: find -name '要查找的文件名' | xargs perl -pi -e 's|被替换的字符串|替换后的字符串|g' #查找替换当前目录下包含字符串并进行替换 ...
- 微服务网关从零搭建——(九)网关部署到linux服务器
环境准备 公司电脑已安装core环境所以此处略过core环境安装 可参看此处 consul安装 如果没有wget命令 执行以下命令 yum install wget 下载consul wget htt ...
- HTML5大数据可视化效果(一)彩虹爆炸图
前言 25年过去了,Brooks博士著名的“没有银弹”的论断依旧没有被打破.HTML5也是一样.但这并不妨碍HTML5是一个越来越有威力的“炸蛋”:发展迅速.势不可挡.随着HTML5技术的普及,用HT ...