Yocto问题处理小结

最近在搞imx-yocto-L5.4.24_2.1.0的编译,也是第一次接触这个东西真的是遇到各种问题,也做个小结。

参考文档下载地址:https://www.nxp.com.cn/design/software/embedded-software/i-mx-software/embedded-linux-for-i-mx-applications-processors:IMXLINUX?tab=Documentation_Tab

 

按照文档使用的是Ubuntu18.04,硬盘空间240G,内存空间3G。文档中建议的空间是120G,实际上在编译过程中会出现硬盘空间不足的情况。

编译时最好使用固态硬盘,机械硬盘的编译速度简直感人。

 

  • 增加并行任务数量,加快下载速度

打开编译目录下的local.conf文件 (我使用的文件夹是imx-yocto-bsp )

vi imx-yocto-bsp/build-xwayland/conf/local.conf

添加下列两条指令 8代表8个任务并行



MACHINE ??= 'imx8qxpmek'
DISTRO ?= 'fsl-imx-xwayland'
PACKAGE_CLASSES ?= 'package_rpm'
EXTRA_IMAGE_FEATURES ?= "debug-tweaks"
USER_CLASSES ?= "buildstats image-mklibs image-prelink"
PATCHRESOLVE = "noop"
BB_DISKMON_DIRS ??= "\
    STOPTASKS,${TMPDIR},1G,100K \
    STOPTASKS,${DL_DIR},1G,100K \
    STOPTASKS,${SSTATE_DIR},1G,100K \
    STOPTASKS,/tmp,100M,100K \
    ABORT,${TMPDIR},100M,1K \
    ABORT,${DL_DIR},100M,1K \
    ABORT,${SSTATE_DIR},100M,1K \
    ABORT,/tmp,10M,1K"
PACKAGECONFIG_append_pn-qemu-system-native = " sdl"
CONF_VERSION = "1"

DL_DIR ?= "${BSPDIR}/downloads/"
ACCEPT_FSL_EULA = "1"

//以下两条指令
BB_NUMBER_THREADS = '8' 
PARALLEL_MAKE = '-j 8'

# Switch to Debian packaging and include package-management in the image
PACKAGE_CLASSES = "package_deb"
EXTRA_IMAGE_FEATURES += "package-management"

建议只用于下载,并行编译很容易出现内存不足编译失败的问题。如果使用的是机械硬盘,并行编译的任务多了之后,很容易出现任务还在跑却没在编译(cpu没跑满)。

 

对于设置yocto只下载,针对于我使用的yocto,网上找的一些只下载指令试过都不太行,我最后用了这个指令

bitbake imx-image-full --runall=fetch

用是可以用,不过增加并行任务的语句就不生效了

 

  • 清除中间文件,节约硬盘空间

同样也是修改imx-yocto-bsp/build-xwayland/conf/local.conf文件

添加下面这行,可以在编译完成后删除中间文件(下载的文件都还在,删除了中间文件后,我的yocto大小从240G变成了110G)

INHERIT += "rm_wo

 

  • 编译时出现Error: open CFI at the end of file; missing .cfi_endproc directive

基本上是内存不足造成的,有实际内存的可以加大虚拟机内存,如果没有可以增加Ubuntu的swap空间

参考这个https://blog.youkuaiyun.com/yc461515457/article/details/53610412

注意每次打开一个shell窗口时,需要重新激活swap文件

 

  • 各种do_compile do_configure 等类似的错误

简单点可以使用

bitbake -c cleansstate  <软件包名>

这会清除所有编译生成的文件

如果不行尝试

bitbake -c clean <软件包名>

这会清除所有的配置文件,编译生成的文件

如果依然不行尝试

bitbake -c cleanall <软件包名>

这会清除所有相关文件,包括下载下来的文件

清除之后可以使用

bitbake  <软件包名> 

进行单独编译

 

  • do_fetch错误 

说实话这个遇到的其实也很多,搞到后来是开代理下载的,不过速度也很感人,最多不会失败。而且do_fetch期间会出现很多次莫名的重新下载也不知道啥原因。

 

  • 编译工具时找不到指定软件包

一般来说这种问题基本上是缺什么装什么就行了

使用

sudo apt-get install <对应软件包>

然后命令行运行测试一下即可。

 

不过我就比较悲催,我遇到的问题就是装上之后依然不行。

我遇到问题是这个样子的

Program sed found: YES (/home/cyk/imx-yocto-bsp/build-xwayland/tmp/hosttools/sed)
Program awk found: YES (/home/cyk/imx-yocto-bsp/build-xwayland/tmp/hosttools/awk)
Program m4 found: YES (/home/cyk/imx-yocto-bsp/build-xwayland/tmp/work/aarch64-poky-linux/systemd/1_243.2-r0/recipe-sysroot-native/usr/bin/m4)
Program stat found: YES (/home/cyk/imx-yocto-bsp/build-xwayland/tmp/hosttools/stat)
Program git found: YES (/home/cyk/imx-yocto-bsp/build-xwayland/tmp/hosttools/git)
Program env found: YES (/home/cyk/imx-yocto-bsp/build-xwayland/tmp/hosttools/env)
Program perl found: YES (/home/cyk/imx-yocto-bsp/build-xwayland/tmp/work/aarch64-poky-linux/systemd/1_243.2-r0/recipe-sysroot-native/usr/bin/perl-native/perl)
Program test/test-efi-create-disk.sh found: YES (/home/cyk/imx-yocto-bsp/build-xwayland/tmp/work/aarch64-poky-linux/systemd/1_243.2-r0/git/test/test-efi-create-disk.sh)
Message: Using /usr/sbin/quotaon for quotaon
Message: Using /usr/sbin/quotacheck for quotacheck
Message: Using /bin/kmod for kmod
Message: Using /usr/sbin/kexec for kexec
Message: Using /sbin/sulogin for sulogin
Message: Using /bin/mount for mount
Message: Using /bin/umount for umount
Program loadkeys found: NO
Program /usr/sbin/loadkeys found: NO
Program /sbin/loadkeys found: NO
Program setfont found: NO
Program /usr/sbin/setfont found: NO
Program /sbin/setfont found: NO
Message: Using /sbin/nologin for nologin
Program gperf found: NO

meson.build:584:0: ERROR: Program(s) ['gperf'] not found or not executable

提示缺少gperf工具,使用apt-get进行安装,清除后重新编译还是不行。这个问题搞了好几天,在网上各种搜都没有找到同样问题的,NXP论坛也去了,得到的解决方案还是不行。最后查看日志的时候发现很多工具都是存放在这个目录下。

/home/cyk/imx-yocto-bsp/build-xwayland/tmp/hosttools

于是就尝试了一下,将/usr/bin目录下的gperf工具拷贝到yocto工具目录下

sudo cp /usr/bin/gperf /home/cyk/imx-yocto-bsp/build-xwayland/tmp/hosttools

重新编译后就可以了,估计到最后还是环境变量的问题,对于yocto在编译过程中的环境变量是什么样的也没去研究。

 

 

另外还有一些yocto使用的网站,可以看看

https://www.kancloud.cn/digest/yocto/138624

https://www.jianshu.com/p/ce13db733c37

还有代理配置介绍的网站

https://www.wangzhi.vip/?p=186

https://www.codelast.com/%E5%8E%9F%E5%88%9B-ubuntu%E7%BB%88%E7%AB%AF%E4%BD%BF%E7%94%A8privoxy%E4%BB%A3%E7%90%86/

不过这些做下来作用都有限,对于我最有用的还是下面这条指令,在git使用http协议下速度能得到明显提升。

export ALL_PROXY=socks5://172.16.112.237:1090

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值