• 【yocto】


    2020-8-1

    yocto目录

    imx-yocto
        |__downloads
        |__build
        |   |__cache
        |   |__conf
        |   |   |__bblayers.conf
        |   |   |__local.conf 
       |   |__tmp
    	|       |__work
    	|       |__deploy
    	|           |__images
    	|
    	|
       |__sources 
            |__base
            |__meta-freescale-3rdparty
    		|   |__classes
    		|   |   |__image_types_digi.bbclass
    		|   |   
    		|   |__conf
    		|   |   |__layer.conf
    		|   |   |__machine
    		|   |       |__cm-fx6.conf
    		|   |__recipes-kernel
    		|   |   |__linux
    		|   |   |   |__linux-advantech_4.9.bb
    		|   |   |__kernel-modules
    		|   |
    		|   |__recipes-basp
    		|
    		|__meta-imx
    		|__meta-openembedded
                |__poky
    		    |__bitbake//bitbake源码
                   |__meta-yocto-bsp
                   |__meta
    

    下载yocto的poky项目

    $ git clone git://git.yoctoproject.org/poky
    $ cd poky
    $ git fetch --tags

    git checkout -t origin/gatesgarth -b my-gatesgarth

    cd poky

    介绍

    Yocto是这个开源项目的名称,该项目旨在帮助我们自定义Linux系统。
    Poky有两个含义。第一个含义是用来构建Linux的构建系统,值得注意的该Poky仅仅是一个概念,而非一个实体。Poky包含了 BitBake工具、编译工具链、BSP、诸多程序包或层,可以认为Poky即是Yocto的本质;此外Poky还有另外一层意思,使用Poky系统得到的默认参考 Linux 发行版也叫Poky(当然,我们可以对此发行版随意命名)。

    Metadata:元数据集,所谓元数据集就是发行版内各基本元素的描述与来源;
    Recipes:.bb/.bbappend文件,配方文件,描述了从哪获取软件源码,如何配置,如何编译。
    bbappend和bb的区别主要在于bbappend是基于bb的,功能是对相应的bb文件作补充和覆盖,有点类似于“重写”的概念。
    
    Class:.bbclass文件
    Configuration:.conf文件,即配置文件,我们可以用它来改变构建方式
    Layers:即各种meta-xxx目录,将Metadata按层进行分类,有助于项目的维护
    Bitbake:一个任务执行引擎,用来解析并执行Metadata
    Output:即各种输出image
    

    整个yocto的使用过程可以这么来概括:yocto本身有我们需要image构建的网址链接(即参考配方),在编译过程中,我们根据需求选择配置选项,(也可以更改内部的.bb文件,根据自己的需求选择配置包)yocto根据这些选项使用bitbake执行引擎从网络上根据实际需要的功能选择部分网址链接获得实际的metadata,最后生成包含linux源码和UBoot源码文件。

    使用

    使能编译环境

    $ source oe-init-build-env
    

    首次使能编译环境时,会创建build目录,后面编译输出都放在build目录,

    编译限制线程的数量
    在…/yocto/build/conf/include/common.conf配置文件中增加:

    BB_NUMBER_THREADS = ‘16’ 
    PARALLEL_MAKE =’-j 16

    Bitbake编译

    编译步骤

    1.sudo su
    2. cd …/yocto
    3. source oe-init-build-env (进入build目录)
    4. bitbake +,bitbake具体命令如下:
    
    直接编译文件系统:
    bitbake core-image-minimal
    
    重新编译u-boot:
    bitbake -c compile -f u-boot(-v)
    
    只下载不编译:
    bitbake -c fetchall core-image-minimal
    
    下载特定的包:
    bitbake packagename -c fetch
    
    查看软件依赖关系:
    bitbake –g packagename
    

    开始编译

    build]$ bitbake core-image-sato
    Loading cache: 100% |                                                                            | ETA:  --:--:--
    Loaded 0 entries from dependency cache.
    Parsing recipes: 100% |###########################################################################| Time: 0:00:11
    Parsing of 821 .bb files complete (0 cached, 821 parsed). 1395 targets, 42 skipped, 0 masked, 0 errors.
    NOTE: Resolving any missing task queue dependencies
    
    Build Configuration:
    BB_VERSION           = "1.48.0"
    BUILD_SYS            = "x86_64-linux"
    NATIVELSBSTRING      = "ubuntu-16.04"
    TARGET_SYS           = "x86_64-poky-linux"
    MACHINE              = "qemux86-64"
    DISTRO               = "mydistro"
    DISTRO_VERSION       = "3.2.2"
    TUNE_FEATURES        = "m64 core2"
    TARGET_FPU           = ""
    meta                 
    meta-poky            
    meta-yocto-bsp       
    
    Initialising tasks: 100% |########################################################################| Time: 0:00:07
    Sstate summary: Wanted 1975 Found 328 Missed 1647 Current 0 (16% match, 0% complete)
    NOTE: Executing Tasks
    

    安装python

    sudo add-apt-repository ppa:deadsnakes/ppa
    sudo apt-get update
    sudo apt-get install python3.6
    

    将python版本切换到3.6

    sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 3
    

    感谢阅读,祝君成功!
    -by aiziyou

  • 相关阅读:
    npm、yarn、pnpm
    自动化运维ansible
    项目相互依赖调用解决方法两种方法
    混淆矩阵细致理解
    Linux进阶---第五篇
    重定向转发,接收请求参数及数据回显-P11,12
    【SQL】MySQL中的字符串处理函数:concat 函数拼接字符串,COALESCE函数处理NULL字符串
    前后端分离项目,vue+uni-app+php+mysql订座预约小程序系统 开题报告
    “10分钟把这个菜单整理成 Excel”,不会编程的老板发话了。
    Java核心技术卷Ⅰ-第四章对象和类
  • 原文地址:https://blog.csdn.net/qq_27094347/article/details/127108833