imx6q yocto常见问题

1 ERROR: QA Issue: non debug package contains .debug directory: xxx path ............[debug-files]
这个问题通常在我们打包一个第三方的应用程序的时候出现,解决的办法是在对应的BB文件里面添加 
FILES_${PN}-dbg += "path/.debug"
重新编译就可以通过了,path为我们打包的路径。


2 ERROR: QA Issue: xxx: Files/directories were installed but not shipped
  ........(这里列出一堆文件)
这个问题通常是在打包一些字库文件,图片文件之类的东东的时候报错的,解决的办法是在对应的BB文件中添加
FILES_${PN} += "path"
path为我们打包图片、字库等文件的路径。


3 设置依赖关系
我们在编译某些包的时候,这个包需要其他包的接口,如果这个包依赖的包还没有编译,那么就会报错。
我们可以在bb文件中添加依赖关系
DEPENDS += "xxx xxx xxx"
xxx为需要依赖的包名。
这样当需要依赖的包还没有编译的时候,就会先编译需要依赖的包。
如果依赖的包改变了,也会重新编译。


4 设置开机自启动的脚本
在相应的BB文件里添加
inherit update-rc.d
INITSCRIPT_NAME = "xxx.sh"
INITSCRIPT_PARAMS = "start 38 S ."
编译成功后,开机会在etc/rcS.d目录下看到S38xxx.sh的链接文件,指向etc/init.d/xxx.sh
开机就会启动这个脚本。


38是启动顺序,S是runlevel
例如也可以设置为 INITSCRIPT_PARAMS = "start 99 5 ."
那么就会在etc/rc5.d的目录下产生一个S99xxx.sh的链接文件
这里需要注意的是xxx.sh这个脚本要打包到etc/init.d/目录下。


5 如何在rootfs中添加或者减少包
  rootfs需要打包那些文件是由bb文件确定的
  例如我们编译命令是 bitbake fsl-image-qt5 ,那么打包的设置就在fsl-image-qt5.bb文件中,这个文件的位置在sources/meta-fsl-bsp-release/imx/meta-sdk/recipes-fsl/images/目录下
  我们可以找到IMAGE_INSTALL下添加或者删除相应的包。
  
6 添加自己的设备树文件
  1 在arch/arm/boot/dts/目录下添加自己的dts文件,例如mytest.dts
  2 修改arch/arm/boot/dts/目录下的makefile文件,在dtb-$(CONFIG_ARCH_MXC) +=下增减mytest.dtb
  3 修改sources/meta-fsl-bsp-release/imx/meta-bsp/conf/machine/ 目录下的im6qsabresd.conf ,在KERNEL_DEVICETREE项添加mytest.dtb,对于自己不需要编译的设备树文件,也可以在这个项下去掉。
  
7 设置要生成的rootfs的类型
  imx6q默认生成的rootfs,有xxx.rootfs.ext3 xxx.tar.bz2 xxx.ext3 xxx.sdcard,如果都生成,占用的磁盘空间很多,生成的时间也会更长。
  实际上我们烧录的rootfs通常只需要一种,这时我们可以通过修改source/meta-fsl-arm/conf/machine/include目录下的imx-base.inc文件
  例如我们只需要xxx.tar.bz2文件,那么可以将SDCARD_ROOTFS ?= "${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.ext3"注释掉
  将IMAGE_FSTYPES ?= "tar.bz2 ext3 sdcard" 改为IMAGE_FSTYPES ?= "tar.bz2 "
  这样就只会生成xxx.tar.bz2一个文件了。
  
8 设置DISTRO_FEATURES
  在默认的设置中,会有很多配方,例如bluetooth irda 3g 等等,而我们的设备上可能没有这些东西,如果把这些都编译到系统里面,rootfs会很庞大。
  我们可以去掉一些不要的配方。例如我们的DISTRO=fsl-imx-x11
  那么可以修改 meta-fsl-bsp-release/imx/meta-sdk/conf/distro/fsl-imx-x11.conf
  在DISTRO_FEATURES_remove中加上要去掉的配方,例如 DISTRO_FEATURES_remove = "bluetooth irda wayland bluez5 alsa nfs pci 3g nfc zeroconf"

  如果要添加配方可以加在DISTRO_FEATURES_append项下。

 

9 每编译一次image,yocto都会在deploy目录下的images目录下保存一份编译好的文件,而且不会删除之前编译的。
  这样造成deploy目录越来越大,几个月之后,系统磁盘空间不足,不得不手工一一删除,费时费力。
  我们可以在conf/local.conf文件下加上
  RM_OLD_IMAGE = "1"
  的配置。
  这样每次编译后,就会删除之前同版本的image。
  在ima6q中,飞思卡尔默认的操作是每次执行fsl-setup-release.sh时,会检测时候存在conf/local.conf.org,如果存在将用conf/local.conf.org恢复conf/local.conf,
  所以我们如果要修改,需要将conf/local.conf和conf/local.conf.org同时修改。
 
10 显示配置的layer以及recipe等信息
bitbake-layers show-layers       -->     显示已配置的layers
    bitbake-layers show-recipes      -->     显示所有可用的recipes
    bitbake-layers show-overlayed    -->    显示所有被覆盖的recipes
    bitbake-layers show-appends    -->    显示所有可用的append文件

 

11 出现gstreamer1.0-libav was skipped: because it has a restricted license not whitelisted in LICENSE_FLAGS_WHITELIST错误的解决办法。
在自己的*.conf文件中加上
LICENSE_FLAGS_WHITELIST = "commercial"

 

12 出现 ERROR: debugedit failed with exit code 256 (cmd was '/home/xxx/imx6q/build-x11/tmp/sysroots/x86_64-linux/usr/lib/rpm/bin/debugedit' -b '/home/xxx/imx6q/build-x11/tmp/work/sbc9000-poky-linux-gnueabi' -d '/usr/src/debug' -i -l '/home/xxx/imx6q/build-x11/tmp/work/sbc9000-poky-linux-gnueabi/sysvinit-inittab/2.88dsf-r10/debugsources.list' '/home/xxx/imx6q/build-x11/tmp/work/sbc9000-poky-linux-gnueabi/sysvinit-inittab/2.88dsf-r10/package/usr/bin/xxx'):
/home/xxx/imx6q/build-x11/tmp/sysroots/x86_64-linux/usr/lib/rpm/bin/debugedit: canonicalization unexpectedly shrank by one character
ERROR: Function failed: split_and_strip_files
ERROR: Logfile of failure stored in: /home/xxx/imx6q/build-x11/tmp/work/sbc9000-poky-linux-gnueabi/sysvinit-inittab/2.88dsf-r10/temp/log.do_package.3053
ERROR: Task 5418 (/home/xxx/imx6q/sources/poky/meta/recipes-core/sysvinit/sysvinit-inittab_2.88dsf.bb, do_package) failed with exit code '1'
的解决办法,在bb文件中增加 INHIBIT_PACKAGE_DEBUG_SPLIT="1"

13 出现do_package_qa: QA Issue: No GNU_HASH in the elf binary错误时

在.bb文件中添加

INSANE_SKIP_${PN} = "ldflags"

你可能感兴趣的:(linux开发)