新闻| 论坛| 博客| 在线研讨会
i.MX6 Yocto工程简介与分析
电子禅石| 2020-12-09 09:44:19 阅读:9633 发布文章

i.MX6Yocto工程简介与分析

按照NXP官方网站的说法,i.MX6的源码都发布在Yocto Project Freescale i.MX6 release工程里了。The FSL Yocto Project Community BSP (freescale.github.io)是一个社区驱动的在Yocto Project里提供相关i.MX6单板支持和维BoardSupport Packagemetalayer社区。使用OpenEmbedded-Core 和 Poky Yocto版本,提供如下主要3个主要meta layer:

meta-freescale: 提供基本BSP支持。

meta-freescale-3rdparty: 第三方和合作伙伴板级支持。

meta-freescale-distro: 提供和版本发布、包管理相关的支持。

该社区最近发布的版本为2.0版本Jethro(对于imx-4.0)、2.1版本Krogoth (对于imx-4.1)和2.2版本Morty (对于imx-4.2)。我们选用imx-4.1.15-2.0.0这个稳定分支。

1、YoctoProject简介

术语 yocto 是最小的SI 单元。作为一个前缀,yocto表示10^-24。YoctoProject是一个开源的协作软件,提供模板、工具和方法帮你创建定制的 Linux 系统和嵌入式产品,而无需关心硬件体系,支持ARM, PPC, MIPS,x86 (32 & 64 bit)硬件体系架构。适合嵌入式Linux开发人员使用。查看Yocto Project Quick Start。

在整个Yocto Project中,这些部分被称为项目,包括构建工具、称为核心配方的构建指令元数据、库、实用程序和图形用户界面 (GUI)。

Poky是YoctoProject的参考发布版本。它包括OpenEmbedded构建系统(BitBake and OpenEmbedded Core)和一系列metadata,帮助开发者构建自己的distro。Poky 这一名称也指使用参考构建系统得到的默认 Linux 发行版,它可能极其小 (core-image-minimal),也可能是带有 GUI 的整个Linux 系统 (core-image-sato),它是一个关于搭建编译你自己制定的Linux发布版本的一个源代码用例。

BitBake 是一个构建引擎,像所有的build工具一样(比如make,ant,jam)控制如何去构建系统并且解决构建依赖。BitBake不是基于固定依赖关系的makefile,而是收集和管理大量没有依赖关系的描述文件(称为包的配方recipes),然后自动按照正确的顺序进行构建。它读取recipes配方并通过获取程序包来密切关注它们、构建它们并将结果纳入可引导映像。BitBake 由 Yocto Project 和OpenEmbedded 项目共同维护。

OpenEmbedded,简称OE,它用来构建和管理嵌入式开发系统(交叉编译、安装、打包)。2004年10月7日ChrisLarson把OE分成了两个项目。一个是BitBake(构建任务的执行者),一个是OpenEmbedded(实际上是为BitBake提供元数据)。YoctoProject使用的OE称为OpenEmbedded-Core,是一些脚本(shell和Python脚本)和用来交叉编译、安装和打包的metadata(元数据)构成的自动构建系统。

metadata元数据集按层进行排列,每一层都可以为下面的层提供单独的功能。基层是 OpenEmbedded-Core 或oe-core,提供了所有构建项目所必需的常见配方、类和相关功能。然后可以通过在 oe-core 之上添加新层来定制构建。OpenEmbedded-Core 由Yocto Project 和 OpenEmbedded 项目共同维护。将 Yocto Project 与 OpenEmbedded 分开的层是meta-yocto 层,该层提供了 Poky 发行版配置和一组核心的参考 BSP。

metadata元数据集包含如下部分:

recipes(配方):(.bb/.bbappend)组件的逻辑单元的构建规范,用来获取源代码、构建和打包组件;

class:(.bbclass)包括各个recipes之间共享的相同的功能;

configuration:(.conf)定义Poky如何的各种配置文件;

layers:一系列相同的recipes,就像meta-fsl-arm。

板卡支持包BSP含为特定板卡或架构构建 Linux 必备的基本程序包和驱动程序。这通常由生产板卡的硬件制造商维护。

2、Freescalei.MX6 Yocto Project搭建

a)基本软硬件环境要求

虽然按照《i.MX Yocto Project User's Guide》中所说Ubuntu 12.04和14.04版本均可,但是为了以后升级和维护的便利,强烈建议使用14.04版本!内存要2G以上(注意不是包括2G,因为内存太小编译可能有问题),磁盘空间至少80G以上,推荐120G,CPU至少双核。强烈不推荐虚拟机的方式,直接在硬盘上安装Ubuntu,除非你的磁盘性能很高。

b)建立Ubuntu 14.04所需要的包

建立Ubuntu 14.04开发包之前,最好把Ubuntu在SoftwareUpdater里更新到最新。

sudo apt-get update

sudo apt-get install gawk wget git-corediffstat unzip texinfo gcc-multilib \

build-essential chrpath socatlibsdl1.2-dev

sudo apt-get install libsdl1.2-devxterm sed cvs subversion coreutils texi2html \

docbook-utils python-pysqlite2 help2manmake gcc g++ desktop-file-utils \

libgl1-mesa-dev libglu1-mesa-devmercurial autoconf automake groff curl lzop asciidoc

sudo apt-get install u-boot-tools

c)下载repo

mkdir ~/bin (this step may not beneeded if the bin folder already exists)

curl http://commondatastorage.googleapis.com/git-repo-downloads/repo> ~/bin/repo

参考文档1给出的地址需要翻墙才能下载,所以换个地址:

curlhttp://php.webtutor.pl/en/wp-content/uploads/2011/09/repo > ~/bin/repo

chmod a+x ~/bin/repo

vi ~/.bashrc 在尾部加:

export PATH=~/bin:$PATH

d)配置git

git config --global user.name"Your Name"

git config --global user.email"Your Email"

git config --list

e) Yocto Project Setup

cd ~

mkdir imx6 && cd imx6

mkdir fsl-release-bsp && cdfsl-release-bsp

repo init -ugit://git.freescale.com/imx/fsl-arm-yocto-bsp.git -b imx-4.1-krogoth –m imx-4.1.15-2.0.0.xml --repo-url=https://gerrit-google.tuna.tsinghua.edu.cn/git-repo

//repo可能找不到,export PATH=~/bin:$PATH下,要是不行,可使用Ubuntu的提示:sudo apt-get installphablet-tools

repo sync //时间可能比较长,依赖于你的网络。

3、ImageBuild

a)Build configurations

Freescale提供了一个脚本fsl-setup-release.sh,能大大简化构建配置。

DISTRO= MACHINE= source fsl-setup-release.sh -b

指定要生成的distribution,固定为以下内容的一个:

fsl-imx-x11 只支持X11 graphics

fsl-imx-wayland 只支持Waylandweston graphics

fsl-imx-xwayland 支持 Waylandgraphics 和X11

fsl-imx-fb 只支持Frame Buffer graphics ,不支持X11和Wayland

指定板子型号,可在sources/meta-fsl-arm/conf/machine看到所有的支持型号,fsl-setup-release.sh脚本会根据MACHINE指定的内容从sources/meta-fsl-arm/conf/machine里面的文件选择对应的.conf进行编译,有下面的值:

imx23evk

imx28evk

imx51evk

imx53ard

imx53qsb

imx6dlsabreauto

imx6dlsabresd

imx6qdlsolo

imx6qpsabreauto

imx6qpsabresd

imx6qsabreauto

imx6qsabresd

imx6slevk

imx6sll_all

imx6sllevk

imx6slllpddr2arm2

imx6slllpddr3arm2

imx6solosabreauto

imx6solosabresd

imx6sx14x14arm2

imx6sx17x17arm2

imx6sx19x19ddr3arm2

imx6sx19x19lpddr2arm2

imx6sx_all

imx6sxsabreauto

imx6sxsabresd

imx6ul14x14ddr3arm2

imx6ul14x14lpddr2arm2

imx6ul7d

imx6ul9x9evk

imx6ulevk

imx6ull14x14ddr3arm2

imx6ull14x14evk

imx6ull9x9evk

imx7d12x12ddr3arm2

imx7d12x12lpddr3arm2

imx7d19x19ddr3arm2

imx7d19x19lpddr2arm2

imx7d19x19lpddr3arm2

imx7dsabresd

ls1021atwr

twr-vf65gs10

是编译的目录,我们可以任意指定一个目录名,编译的时候将在当前目录下新建这个目录。

当执行该脚本之后,会在目录下生成配置文件。在/conf/local.conf会指定DL_DIR的内容,该路径用于下载并保存编译所需要的包。在bitbake在编译的时候会先去该路径查看有没有所需的包,如果没有,就从网上下载到该目录下。一般情况下这些包都是固定的,在团队开发中可由一人先下载,之后共享出来,然后每个人将DL_DIR指定到该共享文件夹就可以省去网上下载的麻烦。

/conf/bblayers.conf会指定所需要的layers。bitbake在启动时会执行bitbake.conf,bitbake.conf会装载用户提供的local.conf。然后根据用户在local.conf中定义的硬件平台MACHINE和发布目标DISTRO装载machine子目录和distro子目录的配置文件。machine子目录里是硬件平台相关的配置文件。distro子目录里是与发布目标相关的配置文件。配置文件负责设置bitbake内部使用的环境变量。这些变量会影响整个构建过程。

每次新打开一个窗口,都要进行一次source操作。

#sourcesetup-environment

我们使用的是

DISTRO=fsl-imx-x11 MACHINE= imx6qsabresd source fsl-setup-release.sh–b build-x11

b)选择一个镜像编译

可供选择的镜像名字如下表格:

Image name

Target

Provided by layer

core-image-minimal

A small image that only allows a device to boot.

poky

core-image-base

A console-only image that fully supports the target device hardware.

poky

core-image-sato

An image with Sato, a mobile environment and visual style for mobile devices. The image supports X11 with a Sato theme and uses Pimlico applications. It contains a terminal, an editor and a file manager.

poky

fsl-image-machine-test

An FSL Community i.MX core image with console environment - no GUI interface.

meta-fsl-demos

fsl-image-gui

Builds a Freescale image with a GUI without any Qt content.

meta-fsl-bsp-release/imx/meta-sdk

fsl-image-qt5

Builds an opensource Qt 5 image. These images are only supported for i.MX SoC with hardware graphics. They are not supported on the i.MX 6UltraLite, i.MX 6UltraLiteLite,and i.MX 7Dual.

meta-fsl-bsp-release/imx/meta-sdk

我们一般使用core-image-base和fsl-image-gui吧。

c)编译镜像

bitbake image-name

我们使用的是bitbake fsl-image-gui

然后漫长的等待,因为要下载7000+个源码包,并把它们编译完全。

4、编译完成后源码目录粗略分析

├── build-x11 //编译目录

│ ├── cache //编译缓存

│ ├── conf //配置

│ ├── sstate-cache //保存状态,如果没有改变下次不再重新编译包

│ │ └── Ubuntu-14.04

│ └── tmp //镜像,代码

│ ├── buildstats //编译时状态记录,如果中断可以续编

│ │ ├── 20171116021902

│ │ └── 20171116063407

│ ├── cache //编译过程中的缓存

│ │ └── default-glibc

│ ├── deploy //生成的镜像、文件系统及安装插件

│ │ ├── images

│ │ ├── licenses

│ │ └── rpm

│ ├── log //编译生成的日志文件

│ │ └── cooker

│ ├── sstate-control //编译完成的包会在这里建立文件以标识

│ ├── stamps

│ │ ├── all-poky-linux

│ │ ├── cortexa9hf-neon-mx6qdl-poky-linux-gnueabi

│ │ ├── cortexa9hf-neon-poky-linux-gnueabi

│ │ ├── imx6qsabresd-poky-linux-gnueabi

│ │ ├── work-shared

│ │ └── x86_64-linux

│ ├── sysroots //缓存的工具连,但是用不了

│ │ ├── imx6qsabresd

│ │ ├── imx6qsabresd-tcbootstrap

│ │ └── x86_64-linux

│ ├── work //代码都在这里

│ │ ├── all-poky-linux

│ │ ├── cortexa9hf-neon-mx6qdl-poky-linux-gnueabi

│ │ ├── cortexa9hf-neon-poky-linux-gnueabi

│ │ ├── imx6qsabresd-poky-linux-gnueabi

│ │ └── x86_64-linux

│ └── work-shared

│ ├── gcc-5.3.0-r0

│ └── imx6qsabresd

└── sources //repo下载的yocto

├── base //baseconfiguration for FSL Community BSP

│ └── conf

├── meta-browser //浏览器支持

│ ├── classes

│ ├── conf

│ ├── recipes-browser

│ │ └── chromium

│ ├── recipes-gnome

│ │ └── gnome-settings-daemon

│ ├── recipes-mozilla

│ │ ├── firefox

│ │ ├── firefox-addon

│ │ ├── firefox-l10n

│ │ └── mozilla-devscripts

│ └── scripts

├── meta-fsl-arm //Freescale ARM基础和Freescale ARM参考板支持

│ ├── browser-layer

│ │ └── recipes-browser

│ ├── classes

│ ├── conf

│ │ └── machine

│ ├── efl-layer

│ │ └── recipes-efl

│ ├── filesystem-layer

│ │ └── recipes-fsl

│ ├── openembedded-layer

│ │ ├── recipes-benchmark

│ │ ├── recipes-kernel

│ │ └── recipes-support

│ ├── qt4-layer

│ │ └── recipes-qt4

│ ├── qt5-layer

│ │ └── recipes-qt

│ ├── recipes-bsp

│ │ ├── alsa-state

│ │ ├── apptrk

│ │ ├── barebox

│ │ ├── change-file-endianess

│ │ ├── elftosb

│ │ ├── firmware-imx

│ │ ├── formfactor

│ │ ├── imx-bootlets

│ │ ├── imx-kobs

│ │ ├── imx-lib

│ │ ├── imx-test

│ │ ├── imx-uuc

│ │ ├── imx-vpu

│ │ ├── mxsldr

│ │ ├── qe-ucode

│ │ ├── rcw

│ │ └── u-boot

│ ├── recipes-core

│ │ ├── packagegroup

│ │ └── udev

│ ├── recipes-devtools

│ │ ├── cst

│ │ ├── devregs

│ │ ├── imx-usb-loader

│ │ └── qemu

│ ├── recipes-fsl

│ │ ├── images

│ │ └── packagegroups

│ ├── recipes-graphics

│ │ ├── cairo

│ │ ├── clutter

│ │ ├── cogl

│ │ ├── drm

│ │ ├── eglinfo

│ │ ├── gtk+

│ │ ├── images

│ │ ├── imx-gpu-viv

│ │ ├── mesa

│ │ ├── piglit

│ │ ├── wayland

│ │ ├── xinput-calibrator

│ │ ├── xorg-driver

│ │ └── xorg-xserver

│ ├── recipes-kernel

│ │ ├── kernel-modules

│ │ └── linux

│ ├── recipes-multimedia

│ │ ├── alsa

│ │ ├── gstreamer

│ │ ├── imx-codec

│ │ ├── imx-parser

│ │ ├── imx-vpuwrap

│ │ ├── libimxvpuapi

│ │ └── pulseaudio

│ ├── SCR

│ │ └── imx

│ └── scripts

│ └── lib

├── meta-fsl-arm-extra //第三方和合作伙伴板级支持

│ ├── conf

│ │ └── machine

│ ├── recipes-bsp

│ │ ├── barebox

│ │ ├── broadcom-nvram-config

│ │ ├── formfactor

│ │ ├── imx-bootlets

│ │ ├── libmcc

│ │ ├── libmcc2

│ │ ├── mqxboot

│ │ └── u-boot

│ ├── recipes-core

│ │ ├── init-ifupdown

│ │ └── net-persistent-mac

│ └── recipes-kernel

│ ├── kernel-module-mcc-toradex

│ ├── kernel-modules

│ ├── linux

│ └── linux-firmware

├── meta-fsl-bsp-release // Freescale BSPrelease layer

│ └── imx

│ ├── classes

│ ├── meta-bsp

│ ├── meta-sdk

│ └── tools

├── meta-fsl-demos //额外的协助开发和测试板载能力

│ ├── conf

│ ├── recipes-fsl

│ │ ├── fsl-rc-local

│ │ ├── images

│ │ └── packagegroups

│ └── recipes-graphics

│ ├── devil

│ └── fsl-gpu-sdk

├── meta-openembedded //OE核心层

│ ├── contrib

│ ├── meta-efl

│ │ ├── classes

│ │ ├── conf

│ │ ├── recipes-core

│ │ ├── recipes-devtools

│ │ ├── recipes-efl

│ │ ├── recipes-multimedia

│ │ └── recipes-navigation

│ ├── meta-filesystems

│ │ ├── conf

│ │ ├── recipes-filesystems

│ │ ├── recipes-support

│ │ └── recipes-utils

│ ├── meta-gnome

│ │ ├── conf

│ │ ├── recipes-apps

│ │ ├── recipes-connectivity

│ │ ├── recipes-devtools

│ │ ├── recipes-extended

│ │ ├── recipes-gnome

│ │ ├── recipes-support

│ │ └── site

│ ├── meta-gpe

│ │ ├── conf

│ │ ├── recipes-graphics

│ │ └── recipes-support

│ ├── meta-initramfs

│ │ ├── classes

│ │ ├── conf

│ │ ├── recipes-bsp

│ │ ├── recipes-devtools

│ │ └── recipes-kernel

│ ├── meta-multimedia

│ │ ├── conf

│ │ ├── recipes-connectivity

│ │ ├── recipes-dvb

│ │ ├── recipes-mediacentre

│ │ ├── recipes-mkv

│ │ ├── recipes-multimedia

│ │ └── recipes-support

│ ├── meta-networking

│ │ ├── classes

│ │ ├── conf

│ │ ├── files

│ │ ├── licenses

│ │ ├── recipes-connectivity

│ │ ├── recipes-daemons

│ │ ├── recipes-extended

│ │ ├── recipes-filter

│ │ ├── recipes-irc

│ │ ├── recipes-kernel

│ │ ├── recipes-netkit

│ │ ├── recipes-protocols

│ │ └── recipes-support

│ ├── meta-oe

│ │ ├── classes

│ │ ├── conf

│ │ ├── licenses

│ │ ├── recipes-benchmark

│ │ ├── recipes-connectivity

│ │ ├── recipes-core

│ │ ├── recipes-devtools

│ │ ├── recipes-extended

│ │ ├── recipes-gnome

│ │ ├── recipes-graphics

│ │ ├── recipes-kernel

│ │ ├── recipes-multimedia

│ │ ├── recipes-navigation

│ │ ├── recipes-sato

│ │ ├── recipes-support

│ │ ├── recipes-test

│ │ └── site

│ ├── meta-perl

│ │ ├── conf

│ │ ├── recipes-extended

│ │ └── recipes-perl

│ ├── meta-python

│ │ ├── classes

│ │ ├── conf

│ │ ├── licenses

│ │ ├── recipes-connectivity

│ │ ├── recipes-devtools

│ │ └── recipes-extended

│ ├── meta-ruby

│ │ ├── classes

│ │ ├── conf

│ │ └── recipes-devtools

│ ├── meta-systemd

│ │ ├── conf

│ │ ├── oe-core

│ │ └── recipes-core

│ ├── meta-webserver

│ │ ├── conf

│ │ ├── licenses

│ │ ├── recipes-httpd

│ │ ├── recipes-php

│ │ ├── recipes-support

│ │ └── recipes-webadmin

│ └── meta-xfce

│ ├── classes

│ ├── conf

│ ├── recipes-apps

│ ├── recipes-art

│ ├── recipes-bindings

│ ├── recipes-core

│ ├── recipes-extended

│ ├── recipes-multimedia

│ ├── recipes-panel-plugins

│ ├── recipes-support

│ ├── recipes-thunar-plugins

│ └── recipes-xfce

├── meta-qt5 //QT5支持

│ ├── classes

│ ├── conf

│ ├── files

│ ├── lib

│ │ └── recipetool

│ ├── licenses

│ ├── recipes-devtools

│ │ └── gdb

│ └── recipes-qt

│ ├── demo-extrafiles

│ ├── examples

│ ├── libconnman-qt

│ ├── maliit

│ ├── meta

│ ├── packagegroups

│ ├── qsiv

│ ├── qt5

│ ├── quazip

│ └── tufao

└── poky //基本Yocto Project的Poky版本

├── bitbake

│ ├── bin

│ ├── contrib

│ ├── doc

│ └── lib

├── documentation

│ ├── adt-manual

│ ├── bsp-guide

│ ├── dev-manual

│ ├── kernel-dev

│ ├── mega-manual

│ ├── profile-manual

│ ├── ref-manual

│ ├── sdk-manual

│ ├── template

│ ├── toaster-manual

│ ├── tools

│ └── yocto-project-qs

├── meta

│ ├── classes

│ ├── conf

│ ├── files

│ ├── lib

│ ├── recipes-bsp

│ ├── recipes-connectivity

│ ├── recipes-core

│ ├── recipes-devtools

│ ├── recipes-extended

│ ├── recipes-gnome

│ ├── recipes-graphics

│ ├── recipes-kernel

│ ├── recipes-lsb4

│ ├── recipes-multimedia

│ ├── recipes-rt

│ ├── recipes-sato

│ ├── recipes-support

│ └── site

├── meta-poky

│ ├── classes

│ ├── conf

│ └── recipes-core

├── meta-selftest

│ ├── classes

│ ├── conf

│ ├── files

│ ├── lib

│ └── recipes-test

├── meta-skeleton

│ ├── conf

│ ├── recipes-core

│ ├── recipes-kernel

│ ├── recipes-multilib

│ └── recipes-skeleton

├── meta-yocto

│ └── conf

├── meta-yocto-bsp

│ ├── conf

│ ├── lib

│ ├── recipes-bsp

│ ├── recipes-core

│ ├── recipes-graphics

│ └── recipes-kernel

└── scripts

├── contrib

├── lib

├── native-intercept

├── postinst-intercepts

├── pybootchartgui

└── tiny

没有downloads目录是因为我把它设置到其他地方了。

5、可能存在的问题

(1) bitbake编译时提示在TMPDIR或SSTATE_DIR创建一个长名文件失败

x@x:~/imx6/fsl-release-bsp/build-x11$ bitbake fsl-image-gui

NOTE: Your conf/bblayers.conf has been automatically updated.

ERROR: OE-core's config sanity checker detected a potential misconfiguration.

Either fix the cause of this error or at your own risk disable the checker(see sanity.conf).

Following is the list of potential problems / advisories:

Failed to create a file with a long name in TMPDIR. Please use afilesystem that does not unreasonably limit filename length.

Failed to create a file with a long name in SSTATE_DIR. Please use afilesystem that does not unreasonably limit filename length.

问题可能原因:# Check thatTMPDIR isn't on a filesystem with limited filename length (eg. eCryptFS)

解决方法:把用户目录去掉加密。

去掉加密步骤:

1)、备份主目录 sudo cp -rp /home/x /home/xx

2)、启动root登录,sudo passwd

3)、root登录进去新建一个账号z,useradd z //注意不用创建目录

4)、重启系统,用z账号shell登录进去,然后su切换到root账号

5)、root账号下删除x用户目录 rm -rf /home/x

在root用户下删除主目录时失败,提示的资源文件忙,这时重启一下机器用root用户登录系统,在删除就没有问题了。

6)、重命名备份主目录xx为主目录x:mv /home/xx /home/x

7)、root账号下删除加密文件

rm -rf /home/.ecryptfs

rm -rf /home/x/.ecryptfs

rm -rf /home/x/.Private

8)、账号x下取消root账号登录:sudo passwd -l root

9)、账号x下删除z账号:sudo userdel -rf z

(2) bitbake编译boost时提示virtual memory exhausted:

Currently 1 running tasks (260 of 260):

0: boost-1.60.0-r0 do_compile (pid 8886)

boost-1.60.0-r0 do_compile: gcc.compile.c++ /home/x/imx6/fsl-release-bsp/build-x11/tmp/work/cortexa9hf-neon-poky-linux-gnueabi/boost/1.60.0-r0/boost_1_60_0/arm-poky-linux-gnueabi/boost/bin.v2/libs/log/build/8208f58b5e252bb068de8fecdebc659d/settings_parser.o

"arm-poky-linux-gnueabi-g++" "-march=armv7-a""-mfpu=neon" "-mfloat-abi=hard" "-mcpu=cortex-a9""-Wl,-O1" "-Wl,--hash-style=gnu""-Wl,--as-needed""--sysroot=/home/x/imx6/fsl-release-bsp/build-x11/tmp/sysroots/imx6qsabresd" -ftemplate-depth-128 -O2 -pipe -g -feliminate-unused-debug-types-fdebug-prefix-map=/home/x/imx6/fsl-release-bsp/build-x11/tmp/work/cortexa9hf-neon-poky-linux-gnueabi/boost/1.60.0-r0=/usr/src/debug/boost/1.60.0-r0-fdebug-prefix-map=/home/x/imx6/fsl-release-bsp/build-x11/tmp/sysroots/x86_64-linux=-fdebug-prefix-map=/home/x/imx6/fsl-release-bsp/build-x11/tmp/sysroots/imx6qsabresd= -fvisibility-inlines-hidden -O3-finline-functions -Wno-inline -Wall -pthread -fPIC -fno-strict-aliasing-ftemplate-depth-1024 -fvisibility=hidden -DBOOST_ALL_NO_LIB=1-DBOOST_ATOMIC_DYN_LINK=1 -DBOOST_CHRONO_DYN_LINK=1-DBOOST_DATE_TIME_DYN_LINK=1 -DBOOST_FILESYSTEM_DYN_LINK=1-DBOOST_LOG_DYN_LINK=1 -DBOOST_LOG_SETUP_BUILDING_THE_LIB=1-DBOOST_LOG_SETUP_DLL -DBOOST_LOG_USE_NATIVE_SYSLOG-DBOOST_LOG_WITHOUT_EVENT_LOG -DBOOST_SPIRIT_USE_PHOENIX_V3=1-DBOOST_SYSTEM_DYN_LINK=1 -DBOOST_SYSTEM_NO_DEPRECATED-DBOOST_THREAD_BUILD_DLL=1 -DBOOST_THREAD_DONT_USE_CHRONO=1-DBOOST_THREAD_POSIX -DBOOST_THREAD_USE_DLL=1 -DDATE_TIME_INLINE -DNDEBUG-D_GNU_SOURCE=1 -D_XOPEN_SOURCE=600 -I"." -c -o "/home/x/imx6/fsl-release-bsp/build-x11/tmp/work/cortexa9hf-neon-poky-linux-gnueabi/boost/1.60.0-r0/boost_1_60_0/arm-poky-linux-gnueabi/boost/bin.v2/libs/log/build/8208f58b5e252bb068de8fecdebc659d/settings_parser.o""libs/log/src/settings_parser.cpp"

virtual memory exhausted:Cannot allocate memory

Currently 1 running tasks (260 of 260):

0: boost-1.60.0-r0 do_compile (pid 8886)

boost-1.60.0-r0 do_compile: gcc.compile.c++ /home/x/imx6/fsl-release-bsp/build-x11/tmp/work/cortexa9hf-neon-poky-linux-gnueabi/boost/1.60.0-r0/boost_1_60_0/arm-poky-linux-gnueabi/boost/bin.v2/libs/log/build/8208f58b5e252bb068de8fecdebc659d/init_from_settings.o

"arm-poky-linux-gnueabi-g++" "-march=armv7-a""-mfpu=neon" "-mfloat-abi=hard" "-mcpu=cortex-a9""-Wl,-O1" "-Wl,--hash-style=gnu""-Wl,--as-needed""--sysroot=/home/x/imx6/fsl-release-bsp/build-x11/tmp/sysroots/imx6qsabresd" -ftemplate-depth-128 -O2 -pipe -g -feliminate-unused-debug-types -fdebug-prefix-map=/home/x/imx6/fsl-release-bsp/build-x11/tmp/work/cortexa9hf-neon-poky-linux-gnueabi/boost/1.60.0-r0=/usr/src/debug/boost/1.60.0-r0-fdebug-prefix-map=/home/x/imx6/fsl-release-bsp/build-x11/tmp/sysroots/x86_64-linux=-fdebug-prefix-map=/home/x/imx6/fsl-release-bsp/build-x11/tmp/sysroots/imx6qsabresd= -fvisibility-inlines-hidden -O3-finline-functions -Wno-inline -Wall -pthread -fPIC -fno-strict-aliasing-ftemplate-depth-1024 -fvisibility=hidden -DBOOST_ALL_NO_LIB=1-DBOOST_ATOMIC_DYN_LINK=1 -DBOOST_CHRONO_DYN_LINK=1-DBOOST_DATE_TIME_DYN_LINK=1 -DBOOST_FILESYSTEM_DYN_LINK=1-DBOOST_LOG_DYN_LINK=1 -DBOOST_LOG_SETUP_BUILDING_THE_LIB=1-DBOOST_LOG_SETUP_DLL -DBOOST_LOG_USE_NATIVE_SYSLOG-DBOOST_LOG_WITHOUT_EVENT_LOG -DBOOST_SPIRIT_USE_PHOENIX_V3=1-DBOOST_SYSTEM_DYN_LINK=1 -DBOOST_SYSTEM_NO_DEPRECATED-DBOOST_THREAD_BUILD_DLL=1 -DBOOST_THREAD_DONT_USE_CHRONO=1-DBOOST_THREAD_POSIX -DBOOST_THREAD_USE_DLL=1 -DDATE_TIME_INLINE -DNDEBUG-D_GNU_SOURCE=1 -D_XOPEN_SOURCE=600 -I"." -c -o "/home/x/imx6/fsl-release-bsp/build-x11/tmp/work/cortexa9hf-neon-poky-linux-gnueabi/boost/1.60.0-r0/boost_1_60_0/arm-poky-linux-gnueabi/boost/bin.v2/libs/log/build/8208f58b5e252bb068de8fecdebc659d/init_from_settings.o""libs/log/src/init_from_settings.cpp"

In file included from ./boost/smart_ptr/detail/atomic_count.hpp:80:0,

from./boost/smart_ptr/intrusive_ref_counter.hpp:19,

from./boost/log/attributes/attribute.hpp:21,

from./boost/log/attributes/attribute_value_set.hpp:26,

from./boost/log/core/record.hpp:21,

from./boost/log/core/core.hpp:23,

from./boost/log/core.hpp:20,

fromlibs/log/src/init_from_settings.cpp:53:

./boost/smart_ptr/detail/atomic_count_sync.hpp: In member function 'longint boost::detail::atomic_count::operator++()':

./boost/smart_ptr/detail/atomic_count_sync.hpp:49:5: warning: no returnstatement in function returning non-void [-Wreturn-type]

}

^

In file included from ./boost/asio/ip/impl/address_v4.ipp:21:0,

from./boost/asio/ip/address_v4.hpp:240,

from./boost/asio/ip/address.hpp:21,

fromlibs/log/src/init_from_settings.cpp:65:

./boost/asio/error.hpp: At global scope:

./boost/asio/error.hpp:258:45: warning:'boost::asio::error::system_category' defined but not used [-Wunused-variable]

static constboost::system::error_category& system_category

^

./boost/asio/error.hpp:260:45: warning:'boost::asio::error::netdb_category' defined but not used [-Wunused-variable]

static constboost::system::error_category& netdb_category

^

./boost/asio/error.hpp:262:45: warning: 'boost::asio::error::addrinfo_category'defined but not used [-Wunused-variable]

static constboost::system::error_category& addrinfo_category

^

./boost/asio/error.hpp:264:45: warning:'boost::asio::error::misc_category' defined but not used [-Wunused-variable]

static constboost::system::error_category& misc_category

^

Currently 1 running tasks (260 of 260):

0: boost-1.60.0-r0 do_compile (pid 8886)

boost-1.60.0-r0 do_compile: ...failed updating 1 target...

Currently 1 running tasks (260 of 260):

0: boost-1.60.0-r0 do_compile (pid 8886)

boost-1.60.0-r0 do_compile: + bb_exit_handler

+ ret=1

+ echo WARNING: exit code 1 from a shell command.

Currently 1 running tasks (260 of 260):

0: boost-1.60.0-r0 do_compile (pid 8886)

ERROR: boost-1.60.0-r0 do_compile: Function failed: do_compile (log fileis located at/home/x/imx6/fsl-release-bsp/build-x11/tmp/work/cortexa9hf-neon-poky-linux-gnueabi/boost/1.60.0-r0/temp/log.do_compile.8886)

Currently 1 running tasks (260 of 260):

0: boost-1.60.0-r0 do_compile (pid 8886)

ERROR: Logfile of failure stored in:/home/x/imx6/fsl-release-bsp/build-x11/tmp/work/cortexa9hf-neon-poky-linux-gnueabi/boost/1.60.0-r0/temp/log.do_compile.8886

Log data follows:

问题原因不清楚,可能是因为虚拟机内存(2GB)太小导致,也可能是虚拟机本身导致的。换成4GB内存和非虚拟机方式,问题不在重新。

6、参考文档:

1、《i.MX Yocto Project User's Guide》

2、FSL Community BSP:http://freescale.github.io

3、IBM Jeffrey Osier-Mixon:使用Yocto Project构建自定义嵌入式Linux发行版。
---------------------
作者:Gordon-Li
来源:CSDN
原文:https://blog.csdn.net/ligordon/article/details/78569994
版权声明:本文为博主原创文章,转载请附上博文链接!

https://blog.csdn.net/ligordon/article/details/78569994


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
属于自己的技术积累分享,成为嵌入式系统研发高手。
最近文章
签名类型
2024-04-29 16:28:59
cat 文件名
2024-04-29 15:05:34
推荐文章
最近访客