嵌入式Linux yocto编译步骤总结


yocto编译总结 时间:2018-09-28      来源:未知

前言

我们是在64位的ubuntu上编译3.14.52版本

——》切记相关配置要求,否则错误极多!

官方资料:

http://www.yoctoproject.org/docs/current/ref-manual/ref-manual.html#structure-core-bitbake

http://cgit.openembedded.org/bitbake/

参考资料:

https://github.com/gmacario/easy-build/tree/master/build-yocto

https://maniacbug.wordpress.com/2012/08/03/pandayocto/

1:Host Packages:

 note:不同位/版本的ubuntu的安装准备包是不一样的!

$sudo apt-get update

$sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat libsdl1.2-dev

$sudo apt-get install libsdl1.2-dev xterm sed cvs subversion coreutils texi2html docbook-utils python-pysqlite2 help2man make gcc g++ desktop-file-utils libgl1-mesa-dev libglu1-mesa-dev mercurial autoconf automake groff curl lzop asciidoc

$sudo apt-get install u-boot-tools

2:Setting Up the Repo Utility

这一步是生成了repo工具

2.1:★

$ mkdir ~/bin 

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

$ chmod a+x ~/bin/repo

2.2:

Add the following line to the .bashrcfile to ensure that the ~/binfolder is in your PATH variable

//如果你严格按照上边的操作,下边的操作可以直接复制下去

export PATH=~/bin:$PATH 

3:安装Yocto Project Setup

3.1:

$ mkdir fsl-release-bsp

$ cd fsl-release-bsp

//填写自己的相关信息

$ git config --global user.name "zhaolong"

$ git config --global user.email home_zhaolong@outlook.com

$ git config --list

3.2:★

//注意:这句要求我们选择要现在的版本,这个一定根据自己的要求去填写,不要直接拷贝执行。这句话也可能会失败,它说你权限不够,那可能是你将fsl-release-bsp文件建在了/下,一旦你切换到root,它又说repo命令找不到,要你下载,千万不要sudo apt-get insatll repo,这个绝对错,不要怀疑绝对错!!你应该修改fsl-release-bsp的权限就可以了!!这句话也很容易错误,要么说:网络不可达,要么服务拒绝!这个是正常的,要不断试着安装。这个不算是错误。我们访问是外国的网站,这个正常。

$repo init -u git://git.freescale.com/imx/fsl-arm-yocto-bsp.git -b imx-3.14.52-1.1.0_ga --repo-url=http://github.com/android/tools_repo

$ repo sync ------->//这条指令会执行很长很长时间,而且是很容易出错误!

注意:

这一步很容易出错,If errors occur during repo initialization, try deleting the .repo directory and running the repo initialization command again.在执行这一步的时候一旦有错误就要无条件的将.repo目录删除再更新操作。从新走3.2这个步骤。

3.2报错总结:

 

 

错误:error: Exited sync due to fetch errors

解决方案1(失败):repo sync -f -j10

 

-f 是强制force执行的意思。

-jx 就是表示开x个线程来进行编译。X的数目是你实际处理器个数的2倍。

解决方案2(失败):git版本太低

git –version查看相关git的版本,git版本太低了, repo 升级,不兼容git  1.7.2 以下的版本(git --version,1.7.0.4,貌似是低了点),总之就是git的版本要 >= 1.7.2以上。

 

修改/etc/apt/sources.list文件(该文件是只读文件,sudo vi sources.list) 把下面内容加到后面

deb http://mirrors.163.com/ubuntu/ oneiric main universe restricted multiverse

deb-src http://mirrors.163.com/ubuntu/ oneiric main universe restricted multiverse

deb http://mirrors.163.com/ubuntu/ oneiric-security universe main multiverse restricted

deb-src http://mirrors.163.com/ubuntu/ oneiric-security universe main multiverse restricted

deb http://mirrors.163.com/ubuntu/ oneiric-updates universe main multiverse restricted

deb http://mirrors.163.com/ubuntu/ oneiric-proposed universe main multiverse restricted

deb-src http://mirrors.163.com/ubuntu/ oneiric-proposed universe main multiverse restricted

deb http://mirrors.163.com/ubuntu/ oneiric-backports universe main multiverse restricted

deb-src http://mirrors.163.com/ubuntu/ oneiric-backports universe main multiverse restricted

deb-src http://mirrors.163.com/ubuntu/ oneiric-updates universe main multiverse restricted 

执行命令:sudo apt-get update 

如果出现:提示MMap 没有空间了。请增大 APT::Cache-Limit 的大小。 

按下面的方法解决: 

 编辑 sudo gedit /etc/apt/apt.conf

 修改APT::Cache-Limit 99999999;  

改完之后,重新执行sudo apt-get update

执行命令:sudo apt-get install git 好了,执行完毕后再重新查看git的版本, 

解决方案3(失败):repo sync --force-sync

repo sync --force-sync system/core

repo sync -j1 -f --force-sync 

4:compiling生成bsp

4.1:配置编译项

4.1.1这个生成完整的bsp:

$MACHINE=imx6qsabresd source fsl-setup-release.sh -b imx6qsabresd-fb -e fb

$MACHINE=imx6ulevk source fsl-setup-release.sh -b imx6ulevk-fb -e fb

$MACHINE=imx6ulevk source fsl-setup-release.sh -b imx6ulevk2-fb -e fb

DISTRO:发行版配置    可以定制!

我们可以后将配置项目保存到source/meta-fsl-bsprelease/imx/meta-sdk/conf/distro的配置文件中看到相关配置。主要支持的发行版配置:

? fsl-imx-x11    -Only X11 graphics

? fsl-imx-wayland   -Wayland weston graphics

? fsl-imx-xwayland  -Wayland graphicsand X11.X11 applications using EGL not supported

? fsl-imx-fb    -Frame Buffer graphics - no X11 or Way

MACHINE:板子配置项

这个是机器的名字,就是你板子的名字。这个具体可以在meta-fsl-arm and meta-fsl-bsp-release的配置文件conf/machine找到的。实际上meta-fsl-arm and meta-fsl-bsp-release和meta-fsl-arm-extra是可用的其他的都没有用!

可以选项如下:

? imx6qpsabreauto

? imx6qpsabresd

? imx6ulevk

? imx6dlsabreauto

? imx6dlsabresd

? imx6qsabreauto

? imx6qsabresd

? imx6slevk

? imx6solosabreauto

? imx6solosabresd

? imx6sxsabresd

? imx6sxsabreauto

? imx7dsabresd

-b:编译目录配置项

这个是指明了配置编译时候的目录

-e:后端图像配置项

这个是指明了显示平台和DISTRO作用一样,如果你没有指定DISTRO,那在后用-e fb 指明的是使用的是DISTRO=fsl-imx-fb否则是DISTRO=fsl-imx-x11可以支持的后端图像有:

? fb

? dfb

? wayland

? x11

正常执行后:

You can now run 'bitbake '

Common targets are:

core-image-minimal

meta-toolchain

meta-toolchain-sdk

adt-installer

meta-ide-support

 

Your build environment has been configured with:

 

MACHINE=imx6ulevk

SDKMACHINE=i686

DISTRO=fsl-imx-x11

EULA=1

BSPDIR=

BUILD_DIR=.

root@ubuntu:~/fsl-release-bsp-L3.14.52/imx6ul-sabresd-fb#  

4.1.2这个仅仅生成uboot:

$MACHINE=imx6ulevk  bitbake -c deploy u-boot-imx

 

4.2:编译

//在执行这一步的时候我们可以bitbake –help下看看。能够显示说明,当前环境还算可以,但绝对不是就是百分百OK了,只能说可以了。

 $bitbake fsl-image-machine-test ------》//这个命令执行更费时间!!不要着急。

 

Build Configuration:

BB_VERSION        = "1.26.0"

BUILD_SYS         = "x86_64-linux"

NATIVELSBSTRING   = "Ubuntu-14.04"

TARGET_SYS        = "arm-poky-linux-gnueabi"

MACHINE           = "imx6ulevk"

DISTRO            = "fsl-imx-fb"

DISTRO_VERSION    = "3.14.52-1.1.1"

TUNE_FEATURES     = "arm armv7a vfp neon callconvention-hard cortexa7"

TARGET_FPU        = "vfp-neon"

meta               ----->poky

meta-yocto         ----->poky

meta-fsl-arm       ----->meta-fsl-arm

meta-fsl-arm-extra  ----->meta-fsl-arm-extra

meta-fsl-demos     ----->meta-fsl-demos

meta-bsp           ----->meta-fsl-bsp-release

meta-sdk           ----->meta-fsl-bsp-release

meta-gnome         ----->meta-openembedded

meta-networking    ----->meta-openembedded

meta-python        ----->meta-openembedded

meta-ruby          ----->meta-openembedded

meta-filesystems   ----->meta-openembedded

meta-oe            ----->meta-openembedded

meta-multimedia    ----->meta-openembedded

meta-qt5   ----->

meta-browser       ----->

4.2报错总结:

 

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:

 

Do not use Bitbake as root.

这个记住这个报错是软件安全考虑造成的错误。这个时候你一定是root权限进行操作的,你这个时候su ubuntu的时候在去执行,他一定会报错:没有bitbake命令这个时候切记不要sudo apt-get bitbake一定不要!!你仔细留意的化你会发现你当前在你编译项指定的那个目录层次里面,退出去删除这个目录,切换权限su Ubuntu ,然后在执行bitbake 命令。就OK了!!

 

 5:compiling and install sdk

 //这个命令也是耗费时间的!

 $bitbake fsl-image-machine-test -c populate_sdk

成功执行的:

 

 $cd tmp/deploy/sdk/

 //你会看到下边的交叉编译工具链,OK了。

  ./poky-glibc-x86_64-fsl-image-gui-cortexa7hf-vfp-neon-toolchain-1.8.sh

 //press enter and Y, do not change the install folder

总结:

(一) 这个环境做好了以后就可以不要删除了,你以后就直接走步骤4就可以了。

(二) 一旦退出再次进入,那么bitbake一定不能用了,这个时候你要么将编译目录删除重走步骤4,或者source  setup-environment  ./imx6ulevk-fb/ 后边的是你的编译目录。

 

文件系统位置:

work/imx6ulevk-poky-linux-gnueabi/base-files/3.0.14-r89/image