如何在yocto里面创建自己的recipe
Posted 不知道起个啥名“”
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在yocto里面创建自己的recipe相关的知识,希望对你有一定的参考价值。
文章目录
前言
本文介绍如何在已经存在的meta里面添加一个自己的recipe,并且在recipe里面添加源文件编译helloworld
提示:以下是本篇文章正文内容,下面案例可供参考
一、手动添加recipe
以下内容都是基于imx工程
进入到如下路径:
sources/meta-imx/meta-bsp
使用如下命令创建一个目录:
mkdir recipes-hello
这个目录就是用来存放recipe里面的.bb或者源文件、补丁什么的,也就说所谓的recipe了
二、添加源文件
这里的源文件是指.c文件
和Makefile
c文件主要是打印个helloworld或者其他内容
Makefile就是编译规则
进入到前面创建的 recipes-hello
目录
cd recipes-hello/
创建一个hello文件夹,(一定要创建,不然会找不到后面的recipe,这是因为conf/layer.conf规定的,如下:)
在这个目录下就是可以创建.bb文件还有用来存放源文件的文件夹,比如hello文件就是用来存放源文件,如下:
进入创建的hello文件夹里面,编写c文件,Makefile文件,COPYING.MIT这个文件可以去别的工程下拷贝过来
具体源码如下:
hello.c
#include "stdio.h"
#include "stdlib.h"
int main()
while(1)
printf("我是你爹\\n");
sleep(1);
return 0;
Makefile文件
hello:hello.o
$(CC) -o hello hello.o
hello.o: hello.c
$(CC) -c hello.c
.PHONY : clean
clearn:
-rm -rf *.o
hello.bb文件
DESCRIPTION = "Hello World Test"
SECTION = "examples"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
INSANE_SKIP_$PN = "ldflags"
INSANE_SKIP_$PN-dev = "ldflags"
PV = "1"
PR = "r0"
SRC_URI = "file://Makefile \\
file://COPYING.MIT \\
file://hello.c \\
"
S = "$WORKDIR"
do_compile ()
make
do_install()
install -d $D$bindir/
install -m 0755 $S/hello $D$bindir/
FILES_$PN = "$bindir/hello"
其中LIC_FILES_CHKSUM = "file://COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
这个变量中的COPYING.MIT
可以是其他文件,不过得使用md5sum xxx文件
来生成md5=3da9cfbcb788c80a0384361b4de20420
的数字替换
里面还有其他变量,大家可以自己查看官网https://docs.yoctoproject.org/2.1/ref-manual/ref-manual.html#var-DL_DIR
可以在conf/layer.conf里面添加如下IMAGE_INSTALL_append += "hello"
,不然会找不到生成文件
三、编译
bitbake hello
如果没有问题的话就可以编译成功,大家可以把编译好的镜像烧录到镜像,直接执行hello就可以看到执行效果,或者可以在build/tmp/work/imx6ull14x14evk-poky-linux-gnueabi/imx-image-core/1.0-r0/imx-image-core-1.0
下找到
总结
本文主要讲解如何创建自己的recipe,并且执行效果
喜欢就收藏 + 关注
Yocto tips (10): Yocto hellworld 加入一个软件包
Yocto中一个软件包是放在bb文件里的,然后非常多的bb文件集成一个recipe(配方),然后很多的recipe又组成一个meta layer。因此,要加入一个包事实上就是在recipe以下加入一个bb(bitbake配置文件)。以下使用helloworld作为一个样例。
clone bb文件
首先是进入到一个recipe文件夹下,比如以下就是到了recipes-graphics:
$ pwd /media/work/iMX6/Yocto/sources/meta-fsl-arm/recipes-graphics
然后clone Package配置与source文件夹的repo:
git clone https://github.com/tonyho/helloYocto.git
查看软件包是否已经在Yocto中
09:25 hexiongjun:imx6qsabresd_build $ bitbake -s | grep hello hello :3-r0
确认在了以后,就能够运行编译等task了,假设有须要也能够deploy到rootfs中。这些操作能够參考我曾经的一些博客。
一个软件包的结构
使用tree能够看到,其有一个bb文件,然后当中另一个文件夹放着Makefile与source code:
当中的bb文件内容例如以下:
DESCRIPTION = "Hello World and Zlib test" DEPENDS = "zlib" SECTION = "libs" LICENSE = "MIT" PV = "3" PR = "r0" SRC_URI = " file://helloYocto.c file://zlibtest.c file://makefile " LIC_FILES_CHKSUM = "file://helloYocto.c;md5=2dac018fa193620dc085aa1402e0b346" S = "${WORKDIR}" do_compile () { make } do_install () { install -d ${D}${bindir}/ install -m 0755 ${S}/helloYocto ${D}${bindir}/ install -m 0755 ${S}/zlibtest ${D}${bindir}/ } FILES_${PN} = "${bindir}/helloYocto ${bindir}/zlibtest "
能够看到。bb文件里指定了以下几个变量的值:
- SRC_URI
- LIC_FILES_CHKSUM:这个是checksum,假设是基于版本号管理的source,那么不须要,比如git与svn
- FILES_$(PN):PN是Package number,指代软件版本号使用的PV与PR结合表示,即前面bitbake -s中看到的3-r0
还有两个方法,这2个方法重载了bitbake中默认方法:
- do_compile
- do_install
这两个方法。相应了Package中的compile与install task。
以上是关于如何在yocto里面创建自己的recipe的主要内容,如果未能解决你的问题,请参考以下文章