系统:ubuntu14.04 LTS
切换软件下载源,确保下载资源是最快。
安装必要软件工具:
~$ apt-get install vim
~$ apt-get install openssh-server
切换root权限:
~$ sudo su
1. 执行以下命令,安装如下软件
~# apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat
~# apt-get install u-boot-tools
~# 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
2. 下载repo
~# mkdir ~/bin ~# curl http://php.webtutor.pl/en/wp-content/uploads/2011/09/repo > ~/bin/repo //获取repo ~# chmod a+x ~/bin/repo ~# export PATH=~/bin:$PATH
3. 初始化repo并git下源码,依据网速可能要一个小时左右
~# mkdir fsl_6dl_release ~# cd fsl_6dl_release ~/fsl_6dl_release# git config --global user.name "Your Name" ~/fsl_6dl_release# git config --global user.email "Your Email" ~/fsl_6dl_release# repo init -u git://git.freescale.com/imx/fsl-arm-yocto-bsp.git -b imx-3.14.28-1.0.0_ga ~/fsl_6dl_release# repo sync
至此基本环境搭建完毕。
4. 安装NFS
~$ sudo apt-get install nfs-kernel-server
~$ sudo mkdir /imx6
~$ sudo vi /etc/exports
最后一行添加:/imx6 *(rw,sync,no_root_squash,no_subtree_check)
~$ sudo /etc/init.d/rpcbind restart
~$ sudo /etc/init.d/nfs-kernel-server restart
5. 编译yocto工程
这里我测试过两个image,一个是fsl-image-qt5,编译耗时20小时,文件大小60G;另一个是fsl-image-gui,文件大概40G左右。同学们可以依据自己的需求编译不同版本。说明一下, -b 可以指定你要将文件编译到哪个目录,-e是选择编译的后端,有fb、dfb、wayland、x11等可供选择,这里我选择的是wayland,如果你对其他几个开发顺手的话也可以选其他的。编译大概4个小时左右。
(1)构建交叉编译环境
cd fsl_6dl_release
~/fsl_6dl_release$ MACHINE=imx6dlsabresd source fsl-setup-release.sh -b build-wayland/ -e wayland
(1)配置
编译fsl-image-gui : ~/fsl_6dl_release/build-wayland$ vi conf/local.conf 修改配置文件,改为如下内容(修改前会报错,删掉相关的内容后编译通过)
MACHINE ??= 'imx6dsabresd' DISTRO ?= 'poky' 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 \ ABORT,${TMPDIR},100M,1K \ ABORT,${DL_DIR},100M,1K \ ABORT,${SSTATE_DIR},100M,1K" CONF_VERSION = "1" BB_NUMBER_THREADS = '8' //电脑8线程,编译时可以起8个编译任务 PARALLEL_MAKE = '-j 8' ACCEPT_FSL_EULA = ""
编译fsl-image-qt5,配置文件不用修改,(BB_NUMBER_THREADS = '8',但是编译的时候还是一个任务)。
(2)编译
cd fsl_6dl_release
~/fsl_6dl_release$ MACHINE=imx6dlsabresd source fsl-setup-release.sh -b build-wayland/ -e wayland
~/fsl_6dl_release/build-wayland$ bitbake fsl-image-qt5
6. 编译工具链
cd fsl_6dl_release //如果重启虚拟机,需要执行以建立bitbake环境
~/fsl_6dl_release$ MACHINE=imx6dlsabresd source fsl-setup-release.sh -b build-wayland/ -e wayland //如果重启虚拟机,需要执行以建立bitbake环境
~/fsl_6dl_release/build-wayland$ bitbake meta-toolchain-qt5 //qt工具链
编译完成后请进入<build dir>/tmp/deploy/sdk 目录下找到工具链,是一个安装文件,可以用在其他系统上。
7. 安装编译工具链
当执行完bitbake meta-toolchain-qt5后,工具链及生成脚本了。
执行以下命令查看(版本不一定跟我的一样):
~/fsl_6dl_release/build-wayland$ ls tmp/deploy/sdk/poky-glibc-x86_64-meta-toolchain-qt5-cortexa9hf-vfp-neon-toolchain-1.7.sh
安装qt交叉编译工具 ~/fsl_6dl_release/build-wayland$ sh tmp/deploy/sdk/poky-glibc-x86_64-meta-toolchain-qt5-cortexa9hf-vfp-neon-toolchain-1.7.sh 8. 查看编译完成的目录结构 ~/fsl_6dl_release$ tree -d -L 2 -A . ├── build-wayland //我的编译目录 │ ├── cache //编译缓存 │ ├── conf //配置 │ ├── downloads // │ ├── sstate-cache //保存状态,如果没有改变下次不再重新编译包 │ └── tmp //镜像,代码 ├── downloads //下载的东西 │ ├── debian │ ├── etc │ ├── git2 │ └── home └── sources //repo下载的yocto ├── base ├── meta-browser ├── meta-fsl-arm ├── meta-fsl-arm-extra ├── meta-fsl-bsp-release ├── meta-fsl-demos ├── meta-openembedded ├── meta-qt5 └── poky ~/fsl_6dl_release/build-wayland/tmp$ tree -d -L 2 -A . ├── buildstats //编译时状态记录,如果中断可以续编 │ ├── fsl-image-gui-imx6dlsabresd │ └── meta-toolchain-imx6dlsabresd ├── cache //编译过程中的缓存 │ └── default-glibc ├── deploy //生成的镜像、文件系统及安装插件 │ ├── images │ ├── licenses │ ├── rpm │ └── sdk ├── log //进程编译过程中的log信息 │ └── cooker ├── sstate-control //编译完成的包会在这里建立文件以标识 ├── stamps │ ├── all-poky-linux │ ├── cortexa9hf-vfp-neon-mx6qdl-poky-linux-gnueabi │ ├── cortexa9hf-vfp-neon-poky-linux-gnueabi │ ├── imx6dlsabresd-poky-linux-gnueabi │ ├── work-shared │ ├── x86_64-linux │ ├── x86_64-nativesdk-pokysdk-linux │ ├── x86_64-poky-linux-gnueabi │ └── x86_64-pokysdk-linux ├── sysroots //缓存的工具连,但是你用不了 │ ├── imx6dlsabresd │ ├── imx6dlsabresd-tcbootstrap │ ├── x86_64-linux │ ├── x86_64-nativesdk-pokysdk-linux │ └── x86_64-nativesdk-pokysdk-linux-tcbootstrap ├── work //你的代码都在这里 │ ├── all-poky-linux │ ├── cortexa9hf-vfp-neon-mx6qdl-poky-linux-gnueabi │ ├── cortexa9hf-vfp-neon-poky-linux-gnueabi │ ├── imx6dlsabresd-poky-linux-gnueabi │ ├── x86_64-linux │ ├── x86_64-nativesdk-pokysdk-linux │ ├── x86_64-poky-linux-gnueabi │ └── x86_64-pokysdk-linux └── work-shared └── gcc-4.9.1-r0 kernel源码目录:~/fsl_6dl_release/build-wayland/tmp/work/imx6dlsabresd-poky-linux-gnueabi/linux-imx/3.14.28-r0/git$ u-boot源码目录:~/fsl_6dl_release/build-wayland/tmp/work/imx6dlsabresd-poky-linux-gnueabi/u-boot-imx/2014.04-r0/git$ 9. 安装Qt5转载于:https://www.cnblogs.com/emlslxl/p/5488440.html