全志A31编译环境搭建

本文介绍如何使用lichee.tar.gz文件编译全志A31平台的内核,包括解压文件、选择编译方式、解决编译错误等步骤,并详细解释了set-e命令的作用。

平台:全志A31
内核版本:linux-3.3
gcc版本:arm-linux-gnueabi-gcc 4.6.1
操作系统:Ubantu 2.6.32-38-generic

项目中需要编译A31平台的驱动并在pad上面运行,运行的环境如上所说的。此处只涉及到内核的编译问题,至于模块的配置以及boot的编译并不在此范围内。

全志会提供两个压缩的内核文件,分别为android.tar.gzlichee.tar.gz。在这里只用到lichee.tar.gz这个文件。加压之即可获取到内核源码以及工具链。下面的链接提供了A31_Android移植的说明文档。A31_Android移植


解压lichee.tar.gz

$tar -zxvf lichee.tar.gz

获取到如下的文件:

lichee目录

目录内容
boot-v1.0u-boot源码相关
linux-3.3内核源码
tools工具链以及所有模块的使用状态及GPIO配置脚本
…………………………

README

查看到README的内容如下:

README

很明显,我们是要编译内核源码,所以需要选择2的方式,即

$./build.sh -p sun6i_fiber

执行上述命令之后就完成了内核的编译。就可以通过该内核编译的驱动文件了。


编译错误解决

make的时候出现了如下的错误:

编译出错

google搜索到该原因是没有加编译选项指定平台ARCH=arm,加上即可。

$make ARCH=arm

再次编译出现如下的错误:

编译出错2

同样是google,但是没有一个好的结果。lichee里面的toolchain的版本是4.6.3的版本,我把它换为4.6.1的版本就可以编译通过了。


注:下面的内容是为了学习使用添加进去的,可以忽略之。

build.sh

#!/bin/bash
set -e

buildroot/scripts/common.sh $@

由于很少接触脚本,第一次看到set -e的命令,特地搜索了一下。

Every script you write should include set -e at the top. This tells bash that it should exit the script if any statement returns a non-true return value. The benefit of using -e is that it prevents errors snowballing into serious issues when they could have been caught earlier. Again, for readability you may want to use set -o errexit.
你写的每个脚本都应该在文件开头加上set -e,这句语句告诉bash如果任何语句的执行结果不是true则应该退出。这样的好处是防止错误像滚雪球般变大导致一个致命的错误,而这些错误本应该在之前就被处理掉。如果要增加可读性,可以使用set -o errexit,它的作用与set -e相同。

上面的引用是来自于这篇文章—–Unix/Linux 脚本中 “set -e” 的作用

上述脚本实际上是执行如下语句:

$set -e
$buildroot/scripts/common.sh -p sun6i_fiber
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值