Yocto ,是一个开源社区它通过提供模版、工具和方法帮助开发者创建基于linux内核的定制系统,支持ARM, PPC, MIPS, x86 (32 & 64 bit)硬件体系架构。Yocto Project™是一个开源的协作软件,提供模板、工具和方法帮你创建定制的 Linux 系统和嵌入式产品,而无需关心硬件体系。适合嵌入式Linux开发人员使用。极大地简化你的开发过程,因为你不用再从头裁剪一个完整的Linux发布版本,后者通常包括许多你并不需要的软件。
搭建YOCTO环境,首先是要有一个Ubuntu系统,本人装的系统是Ubuntu-14.04,值得注意的是Ubuntu系统无论是真机还是虚拟机,硬盘分配空间至少要有100G左右,否则可能会出现硬盘空间不足的问题。
虚拟机环境搭建
1).参考nxp官网,下载Freescale_Yocto_Project_User's_Guide
Yocto protect需要安装一些包在虚拟机,重要的包如下:
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
repo工具创建
repo是一种代码版本管理工具,它是由一系列的Python脚本组成,封装了一系列的Git命令,用来统一管理多个Git仓库。
官方的repo脚本下载方法:
$:mkdir ~/bin
$: curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$: chmod a+x ~/bin/repo
$: PATH=${PATH}:~/bin
但由于官网被墙,要么处理,要么就用别的repo,我用的是如下repo工具
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repo
或者 vim ~/bin/repo 修改
# REPO_URL = 'https://gerrit.googlesource.com/git-repo'
REPO_URL = 'https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'
下载代码
下载之前先配置一下git
git config --global user.name "Your Name"
$ git config --global user.email "Your Email"
./repo init -u git://git.freescale.com/imx/fsl-arm-yocto-bsp.git -b imx-3.14.52-1.1.0_ga
./repo sync
配置yocto bsp环境
DISTRO=fsl-imx-fb MACHINE=imx6qsabresd source fsl-setup-release.sh –b build-fb
bitbake fsl-image-gui
如果需要配置qt的话,就用此命令
bitbake fsl-image-qt5
此过程会持续较长时间,虚拟机的话大概需要1-2天,服务器的话大概半天就可以了,主要看电脑或者是服务器的配置
Yocto使用技巧
0.使用之前先在根目录:source fsl-setup-release.sh
1.编译完成后的内核,uboot, rootfs,都会放在build目录下的tmp/deploy/images/MACHINE
2. 查找uboot,kernel目录
3.编译内核
4.查找包
5.手动下载source code
有时候yocto下载会很慢很慢,这时候可以手动下载,比如
可以在本地自己手动git clone git://github.com/Itseez/opencv.git;branch-2.4
然后的yocto里修改bb文件中的SRC ,改为本地路径即可,获取 bitbake opencv -c fetch
6.共享yocto已经下载的文件,加快下载的话可以加大线程数 -j8
包管理器: PACKAGE_CLASS ?= "package_rpm"
Distrbution的License :LICENSE_FLAGS_WHITELIST="commercial"
静态库的添加:SDKIMAGE_FEATURES_append = "staticdev-pkgs"
7.bitbake 参数用法说明 -c
比如:
比如 bitbake fsl-image-qt5 -c fetchall 下载而不编译
8. yocto 编译架构
Yocto中软件包是放在bb文件中的,然后很多的bb文件集成一个recipe,然后许多的recipe又组成一个meta layer,因此,要添加一个包其实就是在recipe下面添加一个bb(bitbake配置文件)。
9.yocto 在rootfs中添加软件
找到rootfs的 bb文件,假设用的是bitbake fsl-image-gui
则查找 find -name "fsl-image-gui*.bb"
然后打开bb文件,添加软件包即可
10.制作sdk 脱离yocto开发
bitbake fsl-image-qt5 -c populate_sdk