您的位置:首页 > 其它

bitbake简单的helloworld expamle

2016-11-10 19:25 357 查看
http://blog.csdn.net/groundhappy/article/details/51493040

build目录里面有 bblayers.conf

bblayers.conf里面有BBPATH和BBFILES还有BBLAYERS
BBPATH是用来搜索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错误
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: