如果你的计算机有50G以上内存给petalinux用,请忽略本文章。
Avnet ultra96提供的2018.3和2019.1这两个BSP版本因加入对chrome浏览器的支持,编译时间在普通计算机上变得无限长,内存耗尽而最后出错退出。运算截图如下:
漫长时间后,程序出错退出
错误如下:
| collect2: fatal error: ld terminated with signal 9 [Killed]
| ERROR: Function failed: do_compile (log file is located at /home/john/ultra96v2/v2/build/tmp/work/aarch64-xilinx-linux/webkitgtk/2.18.6-r0/temp/log.do_compile.11461)
| ERROR: Task (/home/john/petalinux2018.3/components/yocto/source/aarch64/layers/core/meta/recipes-sato/webkit/webkitgtk_2.18.6.bb:do_compile) failed with exit code ‘1’
经查 fatal error: ld terminated with signal 9 [Killed——是由于内存不足造成,
我设想这是由于制作rootfs文件时出的错,因此尝试直接配置根文件
petalinux-build -c rootfs
经检查webkitgtk选项没有勾选,但编译时仍会编译webkitgtk, 经分析这个选项与项目无关,ultra96 BSP作为一个通用设置仍会编译这个选项,这种办法无效。
(/home/john/petalinux2018.3/components/yocto/source/aarch64/layers/core/meta/recipes-sato/webkit/webkitgtk_2.18.6.bb:do_compile) failed with exit code ‘1’
只有采用编辑文件的方式强行删除这个选项,找到webkitgkt所在的 recipe, /home/john/petalinux2018.3/components/yocto/source/aarch64/layers/core/meta/recipes-sato/webkit/webkitgtk_2.18.6.bb,删掉这个文件。
再执行petalinux-build时,发现如下错误:
Missing or unbuildable dependency chain was: [‘petalinux-user-image’, ‘packagegroup-petalinux-self-hosted’, ‘packagegroup-self-hosted’, ‘epiphany’, ‘webkitgtk’]
ERROR: Nothing PROVIDES ‘webkitgtk’ (but /home/john/petalinux2018.3/components/yocto/source/aarch64/layers/core/meta/recipes-gnome/epiphany/epiphany_3.24.3.bb DEPENDS on or otherwise requires it).
ERROR: Nothing RPROVIDES ‘epiphany’ (but /home/john/petalinux2018.3/components/yocto/source/aarch64/layers/core/meta/recipes-core/packagegroups/packagegroup-self-hosted.bb RDEPENDS on or otherwise requires it)
epiphany.bb需要webkitgtk_2.18.6.bb,而packagegroup-self-hosted.bb需要epiphany.bb文件,因此我们必须修改packagegroup-self-hosted.bb,将文件备份后,将其中的选项epiphany一行删掉。
再编译程序,发现另一个程序chromium也耗时很长,内存耗尽
删掉后运行petalinux-build, 发现packagegroup-petalinux-ultra96-webapp需要chrome, petalinux-user-image.bb需要packagegroup-petalinux-ultra96-webapp, 如下图。
ERROR: Nothing RPROVIDES ‘packagegroup-petalinux-ultra96-webapp’ (but /home/john/ultra96v2/v2/project-spec/meta-plnx-generated/recipes-core/images/petalinux-user-image.bb RDEPENDS on or otherwise requires it)
ERROR: Nothing RPROVIDES ‘ultra96-startup-pages’ (but /home/john/petalinux2018.3/components/yocto/source/aarch64/layers/meta-petalinux/recipes-core/packagegroups/packagegroup-petalinux-ultra96-webapp.bb RDEPENDS on or otherwise requires it)
直接编辑/packagegroup-petalinux-ultra96-webapp.bb这个文件, 将packagegroup-petalinux-ultra96-webapp一行删掉。
总之,将两个安装包2018.3 petalinux本身自带的通用安装包epiphany和项目特定的安装包 packagegroup-petalinux-ultra96-webapp全部删除,即可避免过长时间编译、内存溢出。
下面作者采取了直接修改makefile文件的办法,我感觉很复杂,不好操作
http://downloads.element14.com/downloads/zedboard/ultra96/ultra96v2_oob_2019_1.zip?ICID=ultra96v2-datasheet-widget&