“Linux-4.14.98编译手册”的版本间的差异

来自乐兔兔Wiki
跳到导航 跳到搜索
 
(未显示2个用户的38个中间版本)
第1行: 第1行:
===下载源码===
+
==Yocto介绍==
===检查交叉编译工具链===
+
    Yocto项目是一个开源协作项目,可帮助开发人员创建基于Linux的定制系统,这些系统专为嵌入式产品而设计,无论产品的硬件架构如何。Yocto Project提供灵活的工具集和开发环境,允许全球的嵌入式设备开发人员通过共享技术,软件堆栈,配置和用于创建这些定制的Linux映像的最佳实践进行协作。
如果还没有安装交叉工具链,请参考[[Windows-7 Ubuntu-16.04.5 64位开发环境指导|《Ubuntu16.04+Win7》]]安装开发环境及交叉编译工具链。
+
<br/>
 +
&nbsp;&nbsp;&nbsp;&nbsp;全球数以千计的开发人员发现Yocto Project在系统和应用程序开发,归档和管理优势以及用于速度,占用空间和内存利用率的自定义方面都具有优势。该项目是提供嵌入式软件堆栈的标准。该项目允许软件定制和多个硬件平台的构建交换以及可以维护和扩展的软件堆栈。
  
安装完成后,输入指令查看交差编译编译器版本。
+
==Yocto镜像编译==
source /opt/fsl-imx-xwayland/4.9.88-2.0.0/environment-setup-aarch64-poky-linux
+
编译yocto工程前需要先部署Linux开发环境,请参考[[Ubuntu-16.04.6 64位开发环境指导|《Ubuntu-16.04 64位开发环境指导》]]
$CC -v
+
 
串口输出:
+
===Yocto编译完整镜像===
<pre>
+
在网盘上下载ltt-imx8m-evm100-yocto.tar.gz,指定fsl-image-qt5-validation-imx 目标进行编译,命令如下:
Using built-in specs.
+
<pre style="color: #3e45a9">
COLLECT_GCC=aarch64-poky-linux-gcc
+
$ tar -zxvf ltt-imx8m-evm100-yocto.tar.gz
COLLECT_LTO_WRAPPER=/opt/fsl-imx-xwayland/4.9.88-2.0.0/sysroots/x86_64-pokysdk-linux/usr/libexec/aarch64-poky-linux/gcc/aarch64-poky-linux/7.3.0/lto-wrapper
+
$ cd ltt-imx8m-evm100-yocto
Target: aarch64-poky-linux
+
$ DISTRO=fsl-imx-xwayland MACHINE=imx8mqevk source fsl-setup-release.sh -b build-xwayland
Configured with: ../../../../../../work-shared/gcc-7.3.0-r0/gcc-7.3.0/configure --build=x86_64-linux --host=x86_64-pokysdk-linux --target=aarch64-poky-linux --prefix=/opt/fsl-imx-xwayland/4.9.88-2.0.0/sysroots/x86_64-pokysdk-linux/usr --exec_prefix=/opt/fsl-imx-xwayland/4.9.88-2.0.0/sysroots/x86_64-pokysdk-linux/usr --bindir=/opt/fsl-imx-xwayland/4.9.88-2.0.0/sysroots/x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux --sbindir=/opt/fsl-imx-xwayland/4.9.88-2.0.0/sysroots/x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux --libexecdir=/opt/fsl-imx-xwayland/4.9.88-2.0.0/sysroots/x86_64-pokysdk-linux/usr/libexec/aarch64-poky-linux --datadir=/opt/fsl-imx-xwayland/4.9.88-2.0.0/sysroots/x86_64-pokysdk-linux/usr/share --sysconfdir=/opt/fsl-imx-xwayland/4.9.88-2.0.0/sysroots/x86_64-pokysdk-linux/etc --sharedstatedir=/opt/fsl-imx-xwayland/4.9.88-2.0.0/sysroots/x86_64-pokysdk-linux/com --localstatedir=/opt/fsl-imx-xwayland/4.9.88-2.0.0/sysroots/x86_64-pokysdk-linux/var --libdir=/opt/fsl-imx-xwayland/4.9.88-2.0.0/sysroots/x86_64-pokysdk-linux/usr/lib/aarch64-poky-linux --includedir=/opt/fsl-imx-xwayland/4.9.88-2.0.0/sysroots/x86_64-pokysdk-linux/usr/include --oldincludedir=/opt/fsl-imx-xwayland/4.9.88-2.0.0/sysroots/x86_64-pokysdk-linux/usr/include --infodir=/opt/fsl-imx-xwayland/4.9.88-2.0.0/sysroots/x86_64-pokysdk-linux/usr/share/info --mandir=/opt/fsl-imx-xwayland/4.9.88-2.0.0/sysroots/x86_64-pokysdk-linux/usr/share/man --disable-silent-rules --disable-dependency-tracking --with-libtool-sysroot=/home/duxy/linux_4.9.88_2.0.0/build-ori-wayland/tmp/work/x86_64-nativesdk-pokysdk-linux/gcc-cross-canadian-aarch64/7.3.0-r0/recipe-sysroot --with-gnu-ld --enable-shared --enable-languages=c,c++ --enable-threads=posix --enable-multilib --enable-c99 --enable-long-long --enable-symvers=gnu --enable-libstdcxx-pch --program-prefix=aarch64-poky-linux- --without-local-prefix --enable-lto --enable-libssp --enable-libitm --disable-bootstrap --disable-libmudflap --with-system-zlib --with-linker-hash-style=gnu --enable-linker-build-id --with-ppl=no --with-cloog=no --enable-checking=release --enable-cheaders=c_global --without-isl --with-gxx-include-dir=/not/exist/usr/include/c++/7.3.0 --with-build-time-tools=/home/duxy/linux_4.9.88_2.0.0/build-ori-wayland/tmp/work/x86_64-nativesdk-pokysdk-linux/gcc-cross-canadian-aarch64/7.3.0-r0/recipe-sysroot-native/usr/aarch64-poky-linux/bin --with-sysroot=/not/exist --with-build-sysroot=/home/duxy/linux_4.9.88_2.0.0/build-ori-wayland/tmp/work/x86_64-nativesdk-pokysdk-linux/gcc-cross-canadian-aarch64/7.3.0-r0/recipe-sysroot --without-long-double-128 --enable-poison-system-directories --with-mpfr=/home/duxy/linux_4.9.88_2.0.0/build-ori-wayland/tmp/work/x86_64-nativesdk-pokysdk-linux/gcc-cross-canadian-aarch64/7.3.0-r0/recipe-sysroot --with-mpc=/home/duxy/linux_4.9.88_2.0.0/build-ori-wayland/tmp/work/x86_64-nativesdk-pokysdk-linux/gcc-cross-canadian-aarch64/7.3.0-r0/recipe-sysroot --enable-nls --enable-initfini-array --enable-__cxa_atexit
+
$ bitbake fsl-image-qt5-validation-imx
Thread model: posix
+
</pre>
gcc version 7.3.0 (GCC)
+
第一次编译Yocto时会非常耗时,在网速好的情况下也需要好几个小时, 如果编译中途出错,可以ctrl+c中断后,重新执行命令
 +
<pre style="color: #3e45a9">
 +
$ bitbake  fsl-image-qt5-validation-imx
 +
</pre>
 +
如果编译过程中无意关掉了终端,那么重新打开终端进入ltt-imx8m-evm100-yocto目录后只需要执行以下命令就可以重新进入编译环境
 +
<pre style="color: #3e45a9">
 +
$ source setup-environment build-xwayland
 +
</pre>
 +
编译完成后,可在下面的目录中找到编译好的.sdcard.bz2镜像文件
 +
<pre style="color: #3e45a9">
 +
ltt-imx8m-evm100-yocto/build-xwayland/tmp/deploy/images/imx8mqevk
 +
</pre>
 +
编译出来的fsl-image-qt5-validation-imx-imx8mqevk.sdcard.bz2 需要先解压缩,得到fsl-image-qt5-validation-imx-imx8mqevk.rootfs.sdcard文件
 +
<pre style="color: #3e45a9">
 +
$ bunzip2 -d -f fsl-image-qt5-validation-imx-imx8mqevk.rootfs.sdcard.bz2
 +
</pre>
 +
 
 +
Yocto编译过程中可能会报错,看看报的是哪个地方的错误,可以先clean掉这个recipes,再单独编译这个recipes,许多错误都可以解决。比如:
 +
<pre style="color: #3e45a9">
 +
ERROR: Task (/home/ydf/yocto/4.14.98/sources/meta-qt5/recipes-qt/qt5/qtbase-native_git.bb:do_configure) failed with exit code '1'
 +
$ bitbake -c cleansstate qtbase-native_git
 +
$ bitbake qtbase-native_git
 +
</pre>
 +
 
 +
===Yocto编译U-Boot===
 +
uboot源码在ltt-imx8m-evm100-yocto/uboot-imx目录下,编译uboot时,要在sources/meta-fsl-bsp-release/imx/meta-bsp/recipes-bsp/u-boot/u-boot-imx_2018.03.bb文件中进行修改,把想要编译的分支和commit节点进行替换
 +
<pre style="color: #3e45a9">
 +
SRCBRANCH = "imx_v2018.03_4.14.98_2.0.0_ga"                      //分支名
 +
SRCREV = "0f6d1c4ae2ba545ddc08913475faae36b864d2c4"              //commit节点
 +
</pre>
 +
在uboot-imx目录下使用如下命令查看git分支和commit节点
 +
<pre style="color: #3e45a9">
 +
$ git branch
 +
$ git log
 +
</pre>
 +
配置完成后,就可以通过yocto来编译imx-boot,命令如下:
 +
<pre style="color: #3e45a9">
 +
$ cd ltt-imx8m-evm100-yocto
 +
$ source setup-environment build-xwayland
 +
$ bitbake -c cleansstate u-boot
 +
$ bitbake -c compile u-boot -f
 +
$ bitbake -c deploy u-boot
 +
$ bitbake imx-boot
 +
</pre>
 +
编译完后,镜像文件生成目录如下:
 +
<pre style="color: #3e45a9">
 +
build-xwayland/tmp/deploy/images/imx8mqevk/imx-boot-imx8mqevk-sd.bin
 +
</pre>
 +
 
 +
===Yocto编译Kernel和dtb===
 +
Kernel源码在ltt-imx8m-evm100-yocto/linux-imx目录下,编译Kernel时,要在sources/meta-fsl-bsp-release/imx/meta-bsp/recipes-kernel/linux/linux-imx-src-4.14.98.inc文件中进行修改,把想要编译的分支和commit节点进行替换
 +
<pre style="color: #3e45a9">
 +
SRCBRANCH = "ltt_fsl_4.14.98"                                    //分支名
 +
SRCREV = "1a4c66e7a41dc45571dd7f82979db8f103e39703"              //commit节点
 +
</pre>
 +
在linux-imx目录下使用如下命令查看git分支和commit节点
 +
<pre style="color: #3e45a9">
 +
$ git branch
 +
$ git log
 +
</pre>
 +
配置完成后,编译命令如下:
 +
<pre style="color: #3e45a9">
 +
$ cd fsl-release-yocto
 +
$ source setup-environment build-xwayland
 +
$ bitbake -c cleansstate virtual/kernel
 +
$ bitbake -c patch virtual/kernel
 +
$ bitbake -c compile virtual/kernel -f
 +
</pre>
 +
编译完后,镜像文件生成目录如下:
 +
<pre style="color: #3e45a9">
 +
build-xwayland/tmp/work/imx8mqevk-poky-linux/linux-imx/4.14.98-r0/build/arch/arm64/boot                  //Image目录
 +
build-xwayland/tmp/work/imx8mqevk-poky-linux/linux-imx/4.14.98-r0/build/arch/arm64/boot/dts/freescale    //dtb目录
 
</pre>
 
</pre>
如果有如上的打印信息,说明交叉编译链安装成功。
 

2020年1月16日 (四) 14:07的最新版本

Yocto介绍

    Yocto项目是一个开源协作项目,可帮助开发人员创建基于Linux的定制系统,这些系统专为嵌入式产品而设计,无论产品的硬件架构如何。Yocto Project提供灵活的工具集和开发环境,允许全球的嵌入式设备开发人员通过共享技术,软件堆栈,配置和用于创建这些定制的Linux映像的最佳实践进行协作。
    全球数以千计的开发人员发现Yocto Project在系统和应用程序开发,归档和管理优势以及用于速度,占用空间和内存利用率的自定义方面都具有优势。该项目是提供嵌入式软件堆栈的标准。该项目允许软件定制和多个硬件平台的构建交换以及可以维护和扩展的软件堆栈。

Yocto镜像编译

编译yocto工程前需要先部署Linux开发环境,请参考《Ubuntu-16.04 64位开发环境指导》

Yocto编译完整镜像

在网盘上下载ltt-imx8m-evm100-yocto.tar.gz,指定fsl-image-qt5-validation-imx 目标进行编译,命令如下:

$ tar -zxvf ltt-imx8m-evm100-yocto.tar.gz
$ cd ltt-imx8m-evm100-yocto
$ DISTRO=fsl-imx-xwayland MACHINE=imx8mqevk source fsl-setup-release.sh -b build-xwayland
$ bitbake fsl-image-qt5-validation-imx

第一次编译Yocto时会非常耗时,在网速好的情况下也需要好几个小时, 如果编译中途出错,可以ctrl+c中断后,重新执行命令

$ bitbake  fsl-image-qt5-validation-imx

如果编译过程中无意关掉了终端,那么重新打开终端进入ltt-imx8m-evm100-yocto目录后只需要执行以下命令就可以重新进入编译环境

$ source setup-environment build-xwayland

编译完成后,可在下面的目录中找到编译好的.sdcard.bz2镜像文件

ltt-imx8m-evm100-yocto/build-xwayland/tmp/deploy/images/imx8mqevk

编译出来的fsl-image-qt5-validation-imx-imx8mqevk.sdcard.bz2 需要先解压缩,得到fsl-image-qt5-validation-imx-imx8mqevk.rootfs.sdcard文件

$ bunzip2 -d -f fsl-image-qt5-validation-imx-imx8mqevk.rootfs.sdcard.bz2

Yocto编译过程中可能会报错,看看报的是哪个地方的错误,可以先clean掉这个recipes,再单独编译这个recipes,许多错误都可以解决。比如:

ERROR: Task (/home/ydf/yocto/4.14.98/sources/meta-qt5/recipes-qt/qt5/qtbase-native_git.bb:do_configure) failed with exit code '1'
$ bitbake -c cleansstate qtbase-native_git
$ bitbake qtbase-native_git

Yocto编译U-Boot

uboot源码在ltt-imx8m-evm100-yocto/uboot-imx目录下,编译uboot时,要在sources/meta-fsl-bsp-release/imx/meta-bsp/recipes-bsp/u-boot/u-boot-imx_2018.03.bb文件中进行修改,把想要编译的分支和commit节点进行替换

SRCBRANCH = "imx_v2018.03_4.14.98_2.0.0_ga"                       //分支名
SRCREV = "0f6d1c4ae2ba545ddc08913475faae36b864d2c4"               //commit节点

在uboot-imx目录下使用如下命令查看git分支和commit节点

$ git branch
$ git log

配置完成后,就可以通过yocto来编译imx-boot,命令如下:

$ cd ltt-imx8m-evm100-yocto
$ source setup-environment build-xwayland
$ bitbake -c cleansstate u-boot
$ bitbake -c compile u-boot -f
$ bitbake -c deploy u-boot
$ bitbake imx-boot

编译完后,镜像文件生成目录如下:

build-xwayland/tmp/deploy/images/imx8mqevk/imx-boot-imx8mqevk-sd.bin

Yocto编译Kernel和dtb

Kernel源码在ltt-imx8m-evm100-yocto/linux-imx目录下,编译Kernel时,要在sources/meta-fsl-bsp-release/imx/meta-bsp/recipes-kernel/linux/linux-imx-src-4.14.98.inc文件中进行修改,把想要编译的分支和commit节点进行替换

SRCBRANCH = "ltt_fsl_4.14.98"                                    //分支名
SRCREV = "1a4c66e7a41dc45571dd7f82979db8f103e39703"              //commit节点

在linux-imx目录下使用如下命令查看git分支和commit节点

$ git branch
$ git log

配置完成后,编译命令如下:

$ cd fsl-release-yocto
$ source setup-environment build-xwayland
$ bitbake -c cleansstate virtual/kernel
$ bitbake -c patch virtual/kernel
$ bitbake -c compile virtual/kernel -f

编译完后,镜像文件生成目录如下:

build-xwayland/tmp/work/imx8mqevk-poky-linux/linux-imx/4.14.98-r0/build/arch/arm64/boot                  //Image目录
build-xwayland/tmp/work/imx8mqevk-poky-linux/linux-imx/4.14.98-r0/build/arch/arm64/boot/dts/freescale    //dtb目录