文档章节

4412开发板搭建Uboot、Kernel和Android4.0的编译环境方法

topeet
 topeet
发布于 2016/06/22 16:13
字数 1723
阅读 70
收藏 0
点赞 0
评论 0

本文转自迅为4412开发板实战教程书籍:http://www.topeetboard.com

 

 

迅为是基于Ubuntu12.04.2平台做开发,所有的配置和编译脚本也是基于此平台,没有在其它平台上测试过。如果你对Linux和Android开发很熟悉,相信你会根据错误提示逐步找到原因并解决,错误提示一般是选用的平台缺少了某些库文件或者工具等原因造成的;建议初学者使用和迅为一致的平台。

 

Uboot、Kernel以及Android等的编译环境看似复杂,其实只需要抓住以下四个要点。

(1)Uboot、Kernel编译器的安装。编译器在光盘中都有提供,在需要使用的步骤中,会说明编译器在光盘中的位置。

(2)设置环境变量。Uboot、Kernel、QtE、Qtopia编译器的环境变量设置后,编译的时候,系统才能找到编译器。

(3)Android文件系统的编译器。编译器需要使用Ubuntu系统自带的gcc编译器,但是版本不对,所以需要降低版本。迅为将这个过程编写了成几个简单的命令,用户只需要挨个执行命令即可。

(4)库文件。搭建过程中会给通过执行简单的脚本命令来安装库文件,复杂的步骤变的简单有效。

另外,如果用户想了解编译环境具体是怎么搭建起来的,可以利用提供的脚本文件和命令来学习。

1. 使用搭建好的编译环境

两种搭建编译环境的方式,一种方法是用户安装虚拟机,然后安装基础的Ubuntu12.04.2系统,利用迅为提供工具和详细的使用步骤,搭建编译环境;另外一种方法是用户安装虚拟机,然后直接加载“搭建好的Ubuntu镜像”,用户只需要修改一下编译器的环境变量,就可以直接用来编译源码。

以下详细讲解如何搭建编译环境。

需要注意的是,搭建过程中用到的各类软件,都需要和手册提到的版本保持一致,如果使用的是“搭建好的镜像”,则可以跳过这一节,但是编译的时候要针对性的设置一下环境变量。

2.安装基本软件

Ubuntu系统需要一些基础软件,便于后续使用。

(1)安装虚拟机“Vmware_Workstaion_wm”

(2)然后使用虚拟机安装“Ubuntu12.04.2初始系统”。

(3)安装完成后进入Ubuntu的终端,激活root用户;

(4)接着登录root用户;

(5)虚拟机设置联网、CPU、内存、USB等;

(6)将Ubuntu数据源地址修改为国内163服务器地址;

(7)使用“apt-get update命令”更新数据源;

(8)在Ubuntu安装软件vim,apt-get install vim;

(9)在Ubuntu安装软件ssh,apt-get install ssh。

3.交叉编译工具

编译的时候需要用到交叉编译工具,本小节介绍如何安装编译Uboot和Kernel的编译工具arm-2009q3。

提供的交叉编译工具是用户光盘“02_编译器以及烧写工具”→“arm交叉编译器”文件夹中的压缩包“arm-2009q3.tar.bz2”。

使用SSH工具将交叉编译工具拷贝到 Ubuntu12.04.2系统的文件夹“usr”-->“local”-->“arm”中,local下默认没有arm文件夹,可以新建一个。

使用命令“cd /usr/local/arm/”进入/usr/local/arm文件夹,然后使用解压命令“tar -vxf arm-2009q3.tar.bz2”解压压缩包。

接着修改交叉编译工具路径,需要修改环境变量。在Ubuntu命令行中,执行命令“cd /root”和“vim .bashrc”,打开环境变量文件“.bashrc”。

如下图所示,在“.bashrc”文件中的最后一行添加如下信息:

“export PATH=$PATH:/usr/local/arm/arm-2009q3/bin”

修改完成后保存退出。执行更新环境变量“source .bashrc”的命令。

最后,在Ubuntu命令行中输入命令“arm”,然后按TAB键,如果在命令行中能够看到arm编译器的信息,就表明交叉编译工具安装成功。如下图所示。

4.安装库文件、JDK以及降低GCC版本

为了方便用户,我们将库文件和JDK的安装命令制作成了脚本文件,用户只要执行两个脚本就可以安装库文件和JDK。这两个脚本在用户光盘“02_编译器以及烧写工具”→“tools”文件夹下的压缩包“Android_JDK.tar.bz2”中。

用户将压缩包拷贝到Ubuntu系统中,解压压缩包会生成文件夹“Android_JDK”。使用cd命令,进入解压出来的“Android_JDK” -->“jdk6”文件夹。如下图所示,使用命令“./install-sun-java6.sh”运行脚本文件“install-sun-java6.sh”。需要注意的是,这条命令执行完毕可能会耗时15分钟以上。执行脚本的时,根据提示输入对应的选择命令。

前一个脚本运行完毕之后,如下图所示,进入解压出来的文件夹“Android_JDK”中,执行命令“./install-devel-packages.sh”运行脚本“install-devel-packages.sh”,安装库文件,需要注意的是,这条命令可能会耗时40分钟以上。上面脚本执行的时候,需要根据提示输入选择命令。

上面这个脚本执行完毕的时候,要注意一下是否有些库文件提示没有安装。如果发现有库文件没有安装的情况,有可能是网络不好或者下载源丢失。这个时候请使用一下更新下载源的命令”apt-get update“,然后再执行一下上面的两个脚本。

例如,如下图所示,再次运行“./install-devel-packages.sh”之后,如没有提示‘无法安装的库和软件’,那么表明已经安装完整了。

最后介绍降低Android编译器GCC版本的方法。

使用Ubuntu编译Android的时候需要用到Ubuntu系统自带的GCC4.4.7编译器,但是安装的Ubuntu12.04.2版本,它的GCC版本过高,所以这里需将GCC编译器的版本降低到4.4.7。

进入前面解压的文件夹“Android_JDK”中,找到文本“update_gcc.txt”,打开文本“update_gcc.txt”后会看到里面有8条命令,这8条命令需要在Ubuntu命令行中依次执行。

使用命令打开“update_gcc.txt”文件,如下图所示。

在依次执行了这8条命令之后,Ubuntu系统就将gcc的版本降低到4.4.7。使用命令“gcc -v”,可以看到gcc的版本为4.4.7了。

在执行这8条命令时,只有第一条命令会耗时10分钟左右,其它的都会很快完成。需要注意的是,命令一定要依次执行,不能有遗漏。

 

© 著作权归作者所有

共有 人打赏支持
topeet
粉丝 3
博文 28
码字总数 14856
作品 0
东城
X210刷机--利用markdown尝试编写

刷系统需要的原材料:开发板、串口数据线、USB数据线 破坏uboot 对于linux+Qt系统的刷机,我们需要注意的细节: 首先先明白一个概念: 什么是系统控制台?什么是uboot控制台? 系统控制台:是...

qq_38124709
04/15
0
0
linux内核移植过程问题总结

移植内核:2.6.30.4 内核根目录下的.config为当前配置内核的且已经配置好的内核配置。make zImage以此为依据 配置内核的过程: cd linux-2.6.30.4(进入Linux根目录) cp arch/arm/configs/...

fengdaoting
04/14
0
0
嵌入式软件环境构建:uboot、kernel、rootfs、app布局(转载)

嵌入式开发涉及硬件和软件两部分,个人目前主要是做嵌入式软件部分,使用uboot+linux的整体方案。这里所说的“嵌入式软件环境”,不是指宿主机上的嵌入式开发环境,而是指目标机中的运行软件...

woi66
2014/02/10
0
0
嵌入式软件环境构建:uboot、kernel、rootfs、app布局

嵌入式开发涉及硬件和软件两部分,个人目前主要是做嵌入式软件部分,使用uboot+linux的整体方案。这里所说的“嵌入式软件环境”,不是指宿主机上的嵌入式开发环境,而是指目标机中的运行软件...

水海云
2013/02/01
0
2
在mt6735中添加新的开机logo与开\关机动画

一、开机logo 开机logo分为两部分,一个是:《uboot logo》,另一个是:《kernel logo》,Android开机会先显示《uboot logo》图片,然后才显示《kernel logo》图片。有些Android手机会把这两...

m0_37526672
05/12
0
0
mini210s上uboot的移植

mini210s是友善之臂公司推出的基于三星s5pv210的cortex a8 平台的开发板,其实很感谢他们对此作出的努力,才使得向我这样的穷孩子能够早些接触a8(当时买的时候不到600)。但是便宜归便宜,有...

博远
2013/05/06
0
0
编译内核无法生成uImage的原因分析

uBoot启动内核,需要符合要求的内核镜像文件uImage(包含head+body组成); 内核镜像需要mkimage来制作; 如果shell在环境变量目录中找不到mkimage工具,就无法生成uImage; 这里的mkimage必...

流云的博客
2015/04/23
0
0
玩转智能路由器-WRTnode开发板[U-boot使用]

WRTnode的U-boot使用方法 注:由于uboot里对gpio1和gpio2的特殊定义,因此我们在使用WRTnode核心板时不要碰触这两个针脚。 点击下载uboot.bin 特点:支持网页刷新固件及uboot;支持U盘启动;...

openthings
2015/02/27
0
0
u-boot-2009-11移植之stage1(支持从nand启动)

目标板:FL2440 硬件资源:64M SDRAM/256M nandflash(k9f2g08u0a)/4M nor flash(JS28F320) 开发环境:fedora 14 源码:u-boot-2009.11 交叉编译工具链:cross-3.3.2.tar.bz2 参考资料:h...

liufazhang
2011/10/24
0
1
uboot之uboot的命令体系

一、uboot命令的使用: 1、uboot启动进入命令环境下,在此输入命令按回车结束,uboot会收取这个命令然后解析,然后执行。 2、uboot命令体系的实现代码uboot/common/cmd_xxx.c中。有若干个.c文...

qq_41003024
05/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

NNS域名系统之域名竞拍

0x00 前言 其实在官方文档中已经对域名竞拍的过程有详细的描述,感兴趣的可以移步http://doc.neons.name/zh_CN/latest/nns_protocol.html#id30 此处查阅。 我这里主要对轻钱包开发中会用到的...

暖冰
今天
0
0
32.filter表案例 nat表应用 (iptables)

10.15 iptables filter表案例 10.16/10.17/10.18 iptables nat表应用 10.15 iptables filter表案例: ~1. 写一个具体的iptables小案例,需求是把80端口、22端口、21 端口放行。但是,22端口我...

王鑫linux
今天
0
0
shell中的函数&shell中的数组&告警系统需求分析

20.16/20.17 shell中的函数 20.18 shell中的数组 20.19 告警系统需求分析

影夜Linux
今天
0
0
Linux网络基础、Linux防火墙

Linux网络基础 ip addr 命令 :查看网口信息 ifconfig命令:查看网口信息,要比ip addr更明了一些 centos 7默认没安装ifconfig命令,可以使用yum install -y net-tools命令来安装。 ifconfig...

李超小牛子
今天
1
0
[机器学习]回归--Decision Tree Regression

CART决策树又称分类回归树,当数据集的因变量为连续性数值时,该树算法就是一个回归树,可以用叶节点观察的均值作为预测值;当数据集的因变量为离散型数值时,该树算法就是一个分类树,可以很...

wangxuwei
昨天
1
0
Redis做分布式无锁CAS的问题

因为Redis本身是单线程的,具备原子性,所以可以用来做分布式无锁的操作,但会有一点小问题。 public interface OrderService { public String getOrderNo();} public class OrderRe...

算法之名
昨天
10
0
143. Reorder List - LeetCode

Question 143. Reorder List Solution 题目大意:给一个链表,将这个列表分成前后两部分,后半部分反转,再将这两分链表的节点交替连接成一个新的链表 思路 :先将链表分成前后两部分,将后部...

yysue
昨天
1
0
数据结构与算法1

第一个代码,描述一个被称为BankAccount的类,该类模拟了银行中的账户操作。程序建立了一个开户金额,显示金额,存款,取款并显示余额。 主要的知识点联系为类的含义,构造函数,公有和私有。...

沉迷于编程的小菜菜
昨天
1
0
从为什么别的队伍总比你的快说起

在机场候检排队的时候,大多数情况下,别的队伍都要比自己所在的队伍快,并常常懊悔当初怎么没去那个队。 其实,最快的队伍只能有一个,而排队之前并不知道那个队快。所以,如果有六个队伍你...

我是菜鸟我骄傲
昨天
1
0
分布式事务常见的解决方案

随着互联网的发展,越来越多的多服务相互之间的调用,这时候就产生了一个问题,在单项目情况下很容易实现的事务控制(通过数据库的acid控制),变得不那么容易。 这时候就产生了多种方案: ...

小海bug
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部