文章目录

  • 前言
  • 一、搭建环境
    • 电脑硬件要求
    • 安装依赖
    • repo
      • 什么是repo?
      • 获取repo
    • 设置git
  • 二、获取yocto源码
  • 三、yocto源码目录讲解
  • 总结

前言

本文记录下载yocto的源码


提示:以下是本篇文章正文内容,下面案例可供参考

一、搭建环境

电脑硬件要求

该教程中采用的Ubuntu系统,其具体配置要求如下:

Ubuntu 18.04 (LTS)

120G以上的硬盘空间(教程中实际采用200G,如果需要编译机器学习相关的组件,至少使用250GB以上)
内存越大越好
CPU核心数越多越好

安装依赖

sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat cpio python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev pylint3 xterm

repo

要想使用Yocto构建嵌入式Linux系统发行版,需要先将Yocto相关的工具及源码下载至Ubuntu中,而Yocto工具及源码的获取,是通过repo这个工具软件获取的 。

什么是repo?

Repo是一个构建在Git之上的工具,能够更便捷的管理工程项目中的代码存储仓库。简单来说,Git管理单独的模块,而repo管理所有的Git库,将多个Git库组合在一起,形成一个完整的大版本

Android源码目录结构复杂,分为很多很多的功能模块,如果将Android源码Init成一个Git库,那么对于某一模块的开发人员Clone代码时,需要将所有的Android源码全部Clone下来,但实际上他只需要关注自己所负责的模块源码,其他模块的源码该开发人员并不关心,也不需要进行维护,不利于模块化设计。因此,对于庞大的项目,将其Init为一个Git库是不合理的,也不符合解耦的需求。 因此,对于庞大的项目,可以将其分为多个模块,每个模块单独用Git进行管理。但是,存在一个问题,需要一个工具对项目最终代码的进行管理,即,对该项目想各个模块的Git进行管理。repo就是实现这样一个功能。当完成repo init后,会在目录下发现一个.repo隐藏目录,进到.repo/manifest/中,打开default.xml,里面记录着一个版本中需要哪些库的文件。实际上,在manifest中记录了需要用到哪些git库,对于一个发型版本(Android版本)对应着repo中的一个分支,其中的default.xml就记录着这个版本所需要的库,repo工具再根据这个文件去把取各个库的对应分支并最终组合起来

获取repo

创建一个文件夹yocto来存放后面下载的repo和yocto的源码,再执行以下命令获取repo

curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repo
chmod a+x repo

设置git

$ git config --global user.name "Your Name" // 配置git用户名:“Your Name”
$ git config --global user.email "Your Email" // 配置git用户邮箱:“Your Email”
$ git config --list //  查看git配置信息

二、获取yocto源码

进入前面创建的yocto目录执行以下语句:

./repo init -u https://source.codeaurora.org/external/imx/imx-manifest -b imx-linux-zeus -m imx-5.4.47-2.2.0.xml

可能会出现以下错误:
1.网络问题无法获取最新版

由于国内的原因,直接运行上面repo init命令时,会出现fatal: Cannot get https://gerrit.googlesource.com/git-repo/clone.bundle的错误,这是因为repo运行时,会去google服务器请求最新版本,解决方式是在本地环境变量中指定repo服务器地址,可以使用清华的镜像源进行更新,即将如下内容复制到你的~/.bashrc里:

export REPO_URL="https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/"

2.python问题

会提示/usr/bin/env: ‘python’: No such file or directory,这是因为Ubuntu20.04中已经移除了python2的原因,直接使用的是Python3。因此,使用命令:

sudo ln -s /usr/bin/python3 /usr/bin/python

执行成功之后会在该目录下看到隐藏文件.repo目录

.repo目录下的manifests中的文件,定义了imx-linux-zeus分支下使用到的哪些Git库

yocto目录下执行运行./repo sync命令,获取Yocto项目
获取速度和网速有关,如果有梯子的话最好,如果没有的话,因为网络问题直接可按Ctrl+c终止,再次输入./repo sync命令,即可继续从断点处下载

三、yocto源码目录讲解

imx-setup-release.sh:该脚本用于初始化Yocto构建嵌入式Linux系统工作环境。

setup-environment:该脚本根据运行imx-setup-release.sh脚本时输入的参数,设置Yocto工作环境。

sources文件夹:在该文件夹下存放了很多文件、源码以及编译工具,用于构建嵌入式Linux系统。

base:该文件夹下主要存放了bblayers.conf和setup-environment,构建Yocto工作环境时用到。

meta-clang:C语言家族前端和LLVM编译器后端。

meta-freescalse-3rdparty:第三方板卡支持软件。

meta-browser:提供了几种浏览器,如gnome、mozilla。

meta-freescale:提供了一些基于Freescale ARM官方参考板的基础支持软件。

poky:Yocto的基础发行版,在此版本基础上进行构建自己的嵌入式Linux发行版
还有很多目录没有分析,感兴趣的伙伴可以自行探讨。


总结

本文主要是介绍了yocto源码获取的环境搭建和如何获取源码即源码目录,下篇文章介绍yocto是如何编译和工作的流程。

yocto源码和编译过程需要下载的东西
链接:https://pan.baidu.com/s/1ZjacarkPpEIOTbiO_GQsCA
提取码:shw1

喜欢就收藏加关注,和博主一起学习吧!

yocto源码下载和目录分析相关推荐

  1. 【物联网】OpenWrt OpenWRT的源码下载及目录结构

    OpenWRT的源码下载及目录结构 OpenWrt的源代码管理默认用的是SVN下载: svn co svn://svn.openwrt.org/openwrt/trunk/ . 还可以用Git下载: ...

  2. Linux驱动入门(三)——源码下载阅读、分析和嵌入式文件系统介绍

    文章目录 从内核出发 获取内核源码 使用Git 安装内核源码 使用补丁 阅读Linux内核源码 Source Insight简介 阅读源码 内核开发的特点 无libc库抑或无标准头文件 GNU C 没 ...

  3. linux pppd源码下载_pppd源代码分析

    会进一步调用函数 ppp_send_frame( ) 去发送单个数据包.函数 ppp_send_frame( ) 根据前面 pppd 对 PPP 协议模块的设置调用压缩等扩展功能之后, 又经函数 pp ...

  4. Android 第三方ROM CyanogenMod 源码下载,编译,刷机

    转自: http://blog.csdn.net/androiddevelop/article/details/8661120 一. 背景介绍 当前文章是记录自己HTC G12下载,编译,刷入手机   ...

  5. 【SemiDrive源码分析】【Yocto源码分析】02 - yocto/meta-openembedded目录源码分析

    [SemiDrive源码分析][Yocto源码分析]02 - yocto/meta-openembedded目录源码分析 一.meta-openembedded 目录 本 SemiDrive源码分析 ...

  6. RTOS之uCOS-II源码下载及源码目录结构、常见的RTOS!

    RTOS有众多种,用得最火的是FreeRTOS,因为它即使用于商业途径,也是开源免费的:其次是就是uCOS-II和uCOS-III.uCOS-II用于商业途径是需要付费的,但是对于学习研究却是免费的. ...

  7. 【SemiDrive源码分析】【Yocto源码分析】07 - core-image-base-x9h_ref_serdes.rootfs.ext4 文件系统是如何生成的

    [SemiDrive源码分析][Yocto源码分析]07 - core-image-base-x9h_ref_serdes.rootfs.ext4 文件系统是如何生成的 1.core-image-ba ...

  8. php拼音模糊查询,PHP模糊查询技术实例分析【附源码下载】

    本文实例讲述了PHP模糊查询技术.分享给大家供大家参考,具体如下: 简介 从本质上揭密PHP模糊查询技术 功能 根据输入的关键字查找相关用户 PHP用户查询器案例分析 课程目标 掌握PHP模糊技术的应 ...

  9. Winforn中DevExpress的TreeList中显示某路径下的所有目录和文件(附源码下载)

    场景 Winform中DevExpress的TreeList的入门使用教程(附源码下载): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...

最新文章

  1. 大厂围城:千辛万苦杀进来,为何他们选择出逃?
  2. 【排序算法】图解桶排序
  3. 熟悉java环境实验报告_2018-2019-2 20175324实验二面向对象程序设计《Java开发环境的熟悉》实验报告...
  4. 计算机简单故障时的排除方法,电脑简单故障排除解决办法大全
  5. CSDN改版问题多多
  6. html绘制城堡,网页上的虚幻3,HTML5版《史诗城堡》体验
  7. Solr 中 Schema 结构说明
  8. vue项目中常见的跨域问题解决
  9. 计算机视觉 | 1. 一切的基础: 灰度图像 (读取,转换,像素定位)
  10. android虚拟器没有菜单,网易MuMu模拟器不显示Menu(菜单)键的解决办法
  11. Apache DolphinScheduler征稿 — 小Demo轻松入门DolphinSchedule大数据调度工具
  12. 品牌营销案例拆解,一起来看看品牌们近期都有哪些精彩表现吧
  13. 第一篇:丰桥SDK之路由查询【顺丰查询订单的物流信息】
  14. 基于Android开发的在线考试系统(附带源码)
  15. bzoj 2244: [SDOI2011]拦截导弹 cdq分治
  16. 非严格次小生成树 pqq的礼物
  17. zabbix监控cisco路由器线路连通性——通过snmp获得cisco设备ip sla监控结果
  18. 一名985小硕的CV算法秋招经历总结
  19. 学会用版权保护自己的权利
  20. Navisworks 导入revit模型显示不全问题的解决方案(比如不显示体量模型)

热门文章

  1. JAVA基础编程代码50个
  2. AI智能语音客服机器人方案介绍/优点/核心
  3. kubernetes v1.20项目之二进制扩容多Master
  4. 解释@Transactional注解的用法
  5. 视频会议软件行业调研报告 - 市场现状分析与发展前景预测
  6. JAVA——基于控制台的购书系统
  7. uni-app,文本实现展开、收起全文
  8. 8个国外免费学习编程的网站,果断收藏!
  9. LiteOS | 基于LiteOS的智慧农业案例实验分享
  10. Java实现购物车功能