本文记录下载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
要想使用Yocto构建嵌入式Linux系统发行版,需要先将Yocto相关的工具及源码下载至Ubuntu中,而Yocto工具及源码的获取,是通过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工具再根据这个文件去把取各个库的对应分支并最终组合起来
创建一个文件夹yocto来存放后面下载的repo和yocto的源码,再执行以下命令获取repo
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repo
chmod a+x repo
$ 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目录执行以下语句:
./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服务器地址,可以使用清华的镜像源进行更新,即将如下内容复制到你的~/.bashr
c里:
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命令,即可继续从断点处下载
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
喜欢就收藏加关注,和博主一起学习吧!