//记得先执行环境脚本,并在sources目录下执行下面的命令,在哪个目录,新的layer文件夹就会创建在哪里!
marvin@ubuntu:build$ yocto-layer create my_layer
//优先级
Please enter the layer priority you'd like to use for the layer: [default: 6]
//是否创建一个recipe的例子
Would you like to have an example recipe created? (y/n) [default: n] y
Please enter the name you'd like to use for your example recipe: [default: example]
//是否创建一个bbappend的例子
Would you like to have an example bbappend file created? (y/n) [default: n] y
//输入bbappend的名字
Please enter the name you'd like to use for your bbappend file: [default: example]
//版本号,最好不要改。
Please enter the version number you'd like to use for your bbappend file (this should match the recipe you're appending to): [default: 0.1]
New layer created in meta-my_layer.
//记得在主bblayer里enable这个新建的layer
Don't forget to add it to your BBLAYERS (for details see meta-my_layer/README).
marvin@ubuntu:build$
2 将新建的层添加到我们的工程中。
修改fsl-setup-release.sh添加
echo "BBLAYERS += \" \${BSPDIR}/sources/meta-my_layer\"" >> $BUILD_DIR/conf/bblayers.conf
参考原文件中的写法
使用sudo vim fsl-setup-release.sh
保存的时候先用:w!保存文本
然后退出。
修改完的样子
- 编译我们新的层
DISTRO=fsl-imx-x11 MACHINE=imx6qsabresd source fsl-setup-release.sh -b build
bitbake example //example是因为我们使用的默认名称
找到我们编译出的文件
marvin@ubuntu:0.1-r0$ pwd
/home/marvin/fsl-release-bsp/build/tmp/work/cortexa9hf-neon-poky-linux-gnueabi/example/0.1-r0
marvin@ubuntu:0.1-r0$ ls
configure.sstate example.spec image packages-split sstate-build-package sstate-build-package_write_rpm sysroot-destdir
debugsources.list helloworld license-destdir pkgdata sstate-build-packagedata sstate-build-populate_lic temp
deploy-rpms helloworld.c package pseudo sstate-build-package_qa sstate-build-populate_sysroot
marvin@ubuntu:0.1-r0$ file helloworld
helloworld: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=1891ac9d8827b6208e0eadeb06585bd9b53af121, not stripped
marvin@ubuntu:0.1-r0$
可以看到我们之前例子中的源码被交叉编译成arm文件了
源码
此时文件系统里并没有我们的helloworld,这时挂载镜像文件是没有我们的程序的。
sudo mount -o loop -t ext4 fsl-release-bsp/build/tmp/deploy/images/imx6qsabresd/fsl-image-qt5-imx6qsabresd.ext4 /mnt
看完后记得umount
因为我们的APP没有加进系统,现在我们加进去。
vim ../sources/meta-my_layer/conf/layer.conf
打开后添加一行命令
# We have a conf and classes directory, add to BBPATH
BBPATH .= ":${LAYERDIR}"
# We have recipes-* directories, add to BBFILES
BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
${LAYERDIR}/recipes-*/*/*.bbappend"
------------------------------------------------------
IMAGE_INSTALL_append = "example" //添加这句话
------------------------------------------------------
BBFILE_COLLECTIONS += "my_layer"
BBFILE_PATTERN_my_layer = "^${LAYERDIR}/"
BBFILE_PRIORITY_my_layer = "6"
重新编译文件系统
bitbake fsl-image-qt5
sudo mount -o loop -t ext4 fsl-release-bsp/build/tmp/deploy/images/imx6qsabresd/fsl-image-qt5-imx6qsabresd.ext4 /mnt
ls /mnt/usr/bin/helloworld
网友评论