全志A31编译环境搭建

平台:全志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

获取到如下的文件:

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

README

查看到README的内容如下:

全志A31编译环境搭建_第1张图片

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

$./build.sh -p sun6i_fiber

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

编译错误解决

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

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

$make ARCH=arm

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

同样是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

你可能感兴趣的:(linux)