http://blog.youkuaiyun.com/groundhappy/article/details/51493040
build目录里面有 bblayers.conf
bblayers.conf里面有BBPATH和BBFILES还有BBLAYERSBBPATH是用来搜索conf配置文件和class类文件的
BBFILES定位了bb菜谱文件和 bbappend菜谱附加文件
BBLAYERS用来指定layer层的位置和数据信息。BBLAYERS是一个layer目录的list。list
里面的每个变量值指向一个layer目录。这个目录下面又有conf/layer.conf
layer.conf里面又有BBPATH以及当前层的一些配置
bitbake 希望从某一个BBPATH里面的到 conf/bitbake.conf bitbake.conf通常包含了一些其他的变量。
比如架构,机器 本地环境等等附录A
HelloWorld Expample
A1
最简单的就是从hello world来做一个通俗的例子
A2
获取bitbake。不管你用什么方式
A3
设置环境变量 起码能让你运行bitbake
export PATH=/your/path/to/bitbake/bin:$PAHT
A4
1创建目录进入工作目录
mkdir hello
cd hello
2运行Bitbake指令
bitbake
提示
The BBPATH variable is not set and bi.........
因为没有设置BBPATH变量,所以bitbake没法找到.conf文件和.bb文件。也不能找到bitbake.conf文件
3设置BBPATH变量
BBPATH=/your/path/to/hello
export BBPATH
4再次运行bitbake提示
ERROR: Traceback (most recent call last):
.............
这是没有找到bitbake.conf文件
5之前的bitbake是拷贝的某个文件 。这里我们自己创建一个
mkdir conf
在conf目录新建一个bitbake.conf
里面填入
TMPDIR="${TOPDIR}/tmp"
CACHE ="${TMPDIR}/cache"
STAMP="{TMPDIR}/stamps"
T="{TMPDIR}/work"
B="${TMPDIR}"
TMPDIR建立了一个用于输出文件以及中间文件的目录。这个TOPDIR代表hello
所以TMPDIR就是hello/tmp
http://hambedded.org/blog/2012/11/24/from-bitbake-hello-world-to-an-image/#an-overview-of-bitbakeconf
这个链接详细解释了bitbakeconf里面的变量可以去这里看
6再次运行bitbake
ERROR: Unable to parse xxxxx这次是base.bbclass找不到
7
bitbake最小的要求是需要这个base class类
bitbake去classes目录下找这个文件。
我们还是新建一个
mkdir classes
cat <<EOF >classes/base.bbclass
<addtask build
<EOF
关于详细的bbclass参看
http://hambedded.org/blog/2012/11/24/from-bitbake-hello-world-to-an-image/#tasks.
最简单的bitbake任务是执行do_build任务
8再次运行bitbake
Nothing to do. Use 'bitbake world' to build everything, or run 'bitbake --help' for usage information.
没有错误。只是提示nothing todo
所以要创建一个bb文件让他有东西do
9虽然没必要为这个简单的例子创建一个层,但是练习一下创建一个层
http://hambedded.org/blog/2012/11/24/from-bitbake-hello-world-to-an-image/#adding-an-example-layer.
关于创建一个层。参看上面的链接,这里创建一个叫mylayer
最简单的需要一个菜谱文件和层配置文件。这个配置文件需要在conf目录中
mkdir -p mylayer/conf
在conf目录创建一个layer.conf里面写入
BBPATH .= ":${LAYERDIR}"
BBFILES += "${LAYERDIR}/*.bb"
BBFILE_COLLECTIONS += "mylayer"
BBFILE_PATTERN_mylayer := "^${LAYERDIR}/"
接下来就是创建一个bb文件。
在mylayer里面创建一个printhello.bb
写入
DESCRIPTION = "Prints Hello World"
PN = 'printhello'
PV = '1'
python do_build() {
bb.plain("********************");
bb.plain("* *");
bb.plain("* Hello, World! *");
bb.plain("* *");
bb.plain("********************");
}
这个BB文件提供了简单的描述和版本以及名字
10再次运行 这次带菜谱运行 bitbake printhello
提示
ERROR: no recipe files to build, check your BBPATH and BBFILES?
是由于bitbake还需要bblayers.conf
11创建bblayers.conf
这个文件在conf/目录下
写入
BBLAYERS ?= " \
/home/<you>/mylayer \
"
12再次执行
bitbake printhello
输出
********************
* *
* Hello, World! *
* *
********************
特别注意配置文件以及bb文件的解析格式要准确。不然会出现各种parse错误