Bitbake中文手册--1(概述)

Bitbake 介绍 从根本上说,BitBake是一个通用的任务执行引擎,BitBake允许shell和Python任务在复杂的任务间依赖关系的约束条件下有效地并行运行。BitBake的主要用户之一是OpenEmbedded,OpenEmbedded使用Bitbake以及面向任务的方法构建嵌入式Linux软件堆栈。从概念上来说,BitBake在某些方面与GNU Make类似,但是也有明显的区别:1.BitBake根据构建任务时提供的元数据来执行任务。 阅读详情

https://www.yoctoproject.org/docs/3.1.2/bitbake-user-manual/bitbake-user-manual.html

bitbake中文手册

Bitbake中文手册--目录

Bitbake中文手册--1(概述)

Bitbake中文手册--2(执行)

Bitbake中文手册--3(语法)

Bitbake中文手册--4(下载)

Bitbake中文手册--5(词汇)

Bitbake中文手册--附录

第1章概述

欢迎使用BitBake用户手册。本手册提供有关BitBake工具的信息。对于使用BitBake的系统,例如Yocto Project和OpenEmbedded,信息尝试尽可能独立。在某些情况下,在手册中使用编译系统上下文中的场景或示例来帮助理解。对于这些情况,手册清楚地说明了背景。

1.1。介绍

从根本上说,BitBake是一个通用的任务执行引擎,它允许shell和Python任务在复杂的任务间依赖限制环境下 可以高效的并行运行。BitBake的主要用户之一OpenEmbedded采用这个核心,并使用面向任务的方法编译嵌入式Linux软件堆栈。

从概念上讲,BitBake在某些方面类似于GNU Make,但有显着差异:

  • BitBake执行的任务是根据提供的元数据构造的任务。元数据存储在recipe(.bb)和相关的recipe "append" (.bbappend)文件,configuration(.conf)和包含在include (.inc) 文件,class(.bbclass)文件中,并为BitBake提供有关要运行的任务以及这些任务之间的依赖关系的说明。
  • BitBake包括一个fetcher库,用于从不同的地方获取源码,例如本地文件、源码控制系统(svn、git)或者网站。
  • 要编译的每个单元的“说明”(例如一个软件)称为配方文件,包含有关单元的所有信息(依赖项,源文件位置,校验和,描述等)。
  • BitBake包括客户端/服务器抽象类,可以从命令行使用或通过XML-RPC作为服务使用,并具有多个不同的用户界面。

1.2。历史和目标

BitBake最初是OpenEmbedded项目的一部分。它的灵感来自Gentoo Linux发行版使用的Portage包管理系统。2004年12月7日,OpenEmbedded项目团队成员Chris Larson将项目分为两个截然不同的部分:

  • BitBake,一个通用任务执行器
  • OpenEmbedded,BitBake使用的元数据集

今天,BitBake是OpenEmbedded项目的主要基础,该项目用于编译和维护诸如Angstrom Distribution之类的Linux发行版,并用作Linux项目(如Yocto项目)的编译工具。

在BitBake之前,没有任何其他构建工具能够充分满足日渐壮大的嵌入式Linux发行版的需求。传统桌面Linux发行版使用的所有编译系统都缺乏重要的功能,并且在嵌入式领域中普遍存在的基于Buildroot的临时系统都不具备可扩展性或可维护性。

BitBake的一些重要原始目标是:

  • 处理交叉编译。
  • 处理包间依赖关系(在目标体系结构上编译态,在本机体系结构上编译态和运行态)。
  • 支持在给定包中运行任意数量的任务,包括但不限于获取上行源码,解压它们,补丁它们,配置它们等等。
  • 对于编译和目标系统而言,Linux发行版是不可知的。
  • 与机器/机制无关。
  • 支持多个编译和目标操作系统(例如Cygwin,BSD等)。
  • 是自包含的,而不是紧密集成到编译机器的根文件系统中。
  • 处理目标体系结构、操作系统、分布和机器上的条件元数据。
  • 易于使用这些工具去供应需要操作的本地元数据和包。
  • 易于使用BitBake在多个项目之间进行协作编译。
  • 提供在许多包之间共享公共元数据的继承机制。

随着时间的推移,显而易见的是 一些更进一步的需求时必要的:

  • 处理基本配方的变量(例如native,sdk和multilib)。
  • 将元数据拆分到layer图层并允许这些layer图层去增强或者重载其他layer。
  • 允许将给定的一组输入到任务的变量表达式作为校验。基于该校验和,允许使用预编译组件加速编译。

BitBake满足所有原始要求以及更多包含扩展的基本功能,折射出其他要求。灵活性和强大始终是优先事项。BitBake具有高度可扩展性,支持嵌入式Python代码和任意任务的执行。

1.3。概念

BitBake是一个用Python语言编写的程序。在最高级别,BitBake解释元数据,决定运行所需的任务,并执行这些任务。与GNU Make类似,BitBake控制着软件的构建方式。GNU Make通过“makefile”实现其控制。BitBake使用“配方”。

BitBake扩展了像GNU Make这样的简单工具的功能,允许完成更复杂的任务,例如组装整个嵌入式Linux发行版。

本节的其余部分介绍了应该理解的几个概念,以便更好地利用BitBake的功能。

1.3.1。配方

BitBake Recipes,由文件扩展名表示.bb,是最基本的元数据文件。这些配方文件为BitBake提供以下内容:

  • 有关包的描述性信息(作者、主页、license等)
  • 配方的版本
  • 存在依赖关系(包括编译和运行态的依赖)
  • 源代码所在的位置和获取
  • 源代码是否需要一些补丁、怎么找到他们、怎么使用他们
  • 如何配置和编译源码
  • 如何将生成的组件打包到一个或多个可安装的包内
  • 将这些包安装到目标机器的哪些位置或者包生成的位置

 

在BitBake或任何使用BitBake作为其编译系统的项目的内容中,具有.bb 扩展名的文件称为配方。

注意

术语“package”也通常用于描述配方。但是,由于这个词也用于描述项目的打包输出,因此最好保持一个单一描述性术语---“配方”,换句话说,用一个“recipe”文件就可以生成多个相关但独立的可安装“packages”,事实上,这个现象很普遍。

 

1.3.2。配置文件

配置文件由.conf扩展表示,定义了管理项目编译过程的各种配置变量。这些文件分为几个区域,用于定义机器配置选项,分布配置选项,编译器优化选项,常规通用配置选项和用户配置选项。主配置文件是示例bitbake.conf文件,它位于BitBake源码树conf目录中。

1.3.3。类

由.bbclass扩展名表示的类文件,包含在元数据文件之间共享的有用信息。BitBake源代码树目前附带一个类元数据文件base.bbclass。可以在classes目录中找到此文件。base.bbclass是特殊的,因为它总是自动包含在所有配方和类中。此类包含标准的基本任务的定义,例如提取,解包,配置(默认为空),编译(运行任何Makefile),安装(默认为空)和打包(默认为空)。这些任务经常被项目开发过程中添加的其他类覆盖或扩展。

1.3.4。layer 层

layer层允许您将不同定制的类型之间相互隔离。虽然在处理单个项目时,您可能会发现将所有内容都放在一个层中很诱人,但是元数据越模块化,就越容易应对未来的更改。

为了说明如何使用layer层来保持模块化,请考虑为支持特定的目标机器而可能进行的定制。这些类型的定制通常位于一个特殊层,而不是通用层,称为单板支持包(Board Support Package, BSP)层。。此外,例如,机器定制和支持新GUI环境应当在配方和元数据上进行隔离。这种情况提供了两个layer层:一个用于机器配置,另一个用于GUI环境。但是,重要的是要理解BSP layer层仍然可以在GUI环境层中对配方进行特定于机器的添加,而不会使用特定于机器的更改来污染GUI层本身。您可以通过BitBake附加的配方来完成此操作(.bbappend)文件。

1.3.5。扩展文件

附加文件,即具有.bbappend文件扩展名的文件,将构建信息添加或扩展到现有配方文件。

BitBake希望每个附加文件都有一个相应的配方文件。此外,扩展文件和相应的配方文件必须使用相同的根文件名。文件名只能在使用的文件类型后缀(例如formfactor_0.0.bb和formfactor_0.0.bbappend)中有所不同。

扩展文件中的信息将扩展或者覆盖类似命名的配方文件中的信息。

命名扩展文件时,可以使用通配符(%)来匹配配方名称。例如,假设您有一个名为如下的追加文件:

  

 busybox_1.21%.bbappend

该扩展文件将匹配任何busybox_1.21.x.bb 版本的配方。因此,append文件将匹配以下配方名称:

busybox_1.21.1.bb

busybox_1.21.2.bb

busybox_1.21.3.bb

重要:同配符 “%”只能使用在.bbappend之前作为扩展文件的名字,不同使用这个通配符到其他位置。

如果busybox配方更新为busybox_1.3.0.bb,则扩展文件名称将不匹配。但是,如果您命名了追加文件busybox_1.%.bbappend,那么您将获得匹配。

1.4。获得BitBake

你可以通过几种不同的方式获得BitBake:

  • 克隆BitBake:使用Git克隆BitBake源代码库是获取BitBake的推荐方法。克隆存储库可以轻松修复错误并访问稳定的分支和主分支。一旦克隆了BitBake,就应该使用最新的稳定分支进行开发,因为master分支用于BitBake开发,可能包含不太稳定的更改。

您通常需要一个与您正在使用的元数据匹配的BitBake版本。元数据通常是向后兼容的,但不是向前兼容的。

以下是克隆BitBake仓库的示例:

$ git clone git://git.openembedded.org/bitbake

此命令将BitBake Git仓库克隆到名为bitbake的目录中。或者你想用一个新的目录而不是bitbake,你可以指定一个目录名,在git clone命令后面,以下是命名目录bbdev的示例:

$ git clone git://git.openembedded.org/bitbake bbdev

  • 使用分布包管理系统进行安装:建议不要使用此方法,因为在大多数情况下,您的发行版提供的BitBake版本是BitBake仓库快照后面的多个版本。
  • 拍摄BitBake的快照:从源代码仓库下载BitBake的快照,可以访问已知的BitBake分支或版本。

注意

如前所述,克隆Git仓库是获取BitBake的首选方法。克隆仓库使得更新更容易,因为补丁被添加到稳定分支。

以下示例下载BitBake版本1.17.0的快照:

$ wget http://git.openembedded.org/bitbake/snapshot/bitbake-1.17.0.tar.gz
$ tar zxpvf bitbake-1.17.0.tar.gz

在使用tar提取tarball之后,您有一个名为bitbake-1.17.0的目录。

  • 使用编译环境检出的bitbake:最后获取Bitbake的可能是,bitbake来自于你的更大的基于bitbake的编译系统,例如Poky。除了手动检出单独的layer层并将他们粘贴到一起,你还可以检出整个系统。这个检出已经包含了一个版本的bitbake,这个版本已经彻底的测试过,可以兼容其他的组件。如何检出具有基于Bitbake的编译系统,信息请参考编译系统的支持文档

1.5。BitBake命令

该bitbake命令是BitBake工具的主要接口。本节介绍BitBake命令语法并提供了几个执行示例。

1.5.1。用法和语法

以下是BitBake的用法和语法:

$ bitbake -h

     用法:bitbake [options] [recipename/target ...]

 

         对给定的一组目标配方(.bb文件)执行指定的任务(默认为“build”)。

         假设在cwd或BBPATH中有conf/bblayers.conf可用,conf/bblayers.conf将提供layer层,BBFILES和其他配置信息。

 

     选项:

       --version显示程序的版本号

       -h, --help显示此帮助消息

       -b BUILDFILE,--buildfile=BUILDFILE

             直接从特定的.bb配方执行任务。

             警告:不处理来自于其他的配方依赖项。                         

       -k, --continue

            在出错后尽可能继续。虽然失败的目标和任何依赖它的东西都不能编译,
            尽可能在停止之前编译。                           

       -f, --force

            强制运行指定的目标/任务(使无效任何现有的邮戳文件)。

       -c CMD, --cmd=CMD

            指定要执行的任务。可用的确切选项取决于元数据。一些例子可能会可以是'compile'或
            'populate_sysroot'或'listtasks'列出可用的任务。

       -C INVALIDATE_STAMP,--clear-stamp=INVALIDATE_STAMP

            使指定任务的标记失效,例如'compile'然后运行默认任务指定的目标。

       -r PREFILE, --read=PREFILE

            在bitbake.conf之前读取指定的文件。

       -R POSTFILE,--posttread=POSTFILE

            在bitbake.conf之后读取指定的文件。

       -v, --verbose

            使能shell任务的追踪(使用“set -x”),将bb.note(...)信息打印到标准输出
            stdout(而不是将他们写到${T}/log.do_<task>中。

       -D,--debug

            增加调试级别。您可以指定更多不止一次。-D是设置等级为1,bb.debug(1, ...)
            的信息被打印到stdout;-DD是设置等级为2,就是将bb.debug(1, ...)和
            bb.debug(2, ...)信息都打印到stdout,等; 如果没有-D,没有条是信息被打印。
            注意-D 只影响输出到stdout的内容,所有的调试信息会被写到 ${T}/log.do_taskname,
            无视调试等级;

       -q, --quiet

            输出更少的日志信息数据到终端,您可以不止一次指定它。

       -n, --dr-run

            不执行,只有通过这个动作。

       -S DUMP_SIGNATURES,--dump-signatures=DUMP_SIGNATURES

            转储签名构造信息,而不用任务执行。参数DUMP_SIGNATURES传递给签名处理程序,
            两个常见的值是none和printdiff,但处理程序可以定义更多或更少,None表示只转储签名,
            printdiff表示将转储的签名与缓存的签名进行比较

       -p, --parse-only

            解析BB配方后退出。

       -s, --show-versions

            显示所有配方的当前和首选版本。

       -e, --environment

            显示全局或每个配方环境,并完整地显示出信息关于哪里的变量被设置/更改。

       -g, --graphviz

            使用点语法保存指定目标的依赖树信息;

       -I EXTRA_ASSUME_PROVIDED, --signore-deps=EXTRA_ASSUME_PROVIDED

            假设这些依赖项不存在,并且已经提供了(相当于ASSUME_PROVIDED)。有助于使

            依赖关系图更具有吸引力

       -l DEBUG_DOMAINS, --log-domains=DEBUG_DOMAINS

            为指定的日志域显示调试日志

       -P, --profile

            解析命令并保存报告。

       -u UI, --ui=UI

            用户所使用接口(例如knotty、ncurses、taskexp,默认knotty)。

    --token=XMLRPCTOKEN

            指定连接到远程服务器时使用的连接令牌。

       --revisions-changed  

            根据上游浮动版本是否已更改设置退出码。

       --server-only

            运行没有UI的bitbake,只启动服务器(cooker)进程。

       -B BIND, --bind=BIND

            要绑定的bitbake xmlrpc 服务器的名称/地址。

       -T SERVER_TIMEOUT, --idle-timeout=SERVER_TIMEOUT

            设置超时卸载bitbake,当不活动时,设置未-1是不卸载,默认:环境变量为

            BB_SERVER_TIMEOUT

       --no-setscene

            不要运行任何setscene任务。sstate将被忽略一切都需要,编译。

      --setscene-only  

            只跑setscene任务,不跑任何真实任务。

      --remote-server= remote_server的

            连接到指定的服务器。

       -m, --kill-server

            终止远程服务器。

       --observe-only

            作为一个仅观察的客户端连接到服务器。

       --status-only

            检查远程bitbake服务器的状态。

     -w WRITEEVENTLOG, --write-log=WRITEEVENTLOG

            将编译的事件日志写到一个bitbake事件json文件中,使用’’(空字符串)去自动指定名称。

     --runall=RUNALL

            在指定的目标的任务图中,为任何一个配方运行指定的任务(即使它不能正常运行)

   --runonly=RUNONLY

            仅在指定目标的任务图中运行指定的任务(以及这些任务可能具有的任何任务依赖关系)。

1.5.2。例子

本节介绍一些如何使用BitBake的示例。

1.5.2.1。针对单个配方执行任务

执行单个配方文件的任务相对简单。指定所需的文件,BitBake解析它并执行指定的任务。如果没有指定任务,BitBake将执行默认任务,即“build”。BitBake在执行此操作时遵循任务间依赖性。

以下命令在foo_1.0.bb配方文件上运行构建任务,这是默认任务:

$ bitbake -b foo_1.0.bb

以下命令在foo.bb配方文件上运行clean任务 :

$ bitbake -b foo.bb -c clean

注意

“-b”选项显式不处理配方依赖项。除了用于调试目的之外,建议使用下一节中提供的语法。

 

1.5.2.2。执行一组配方文件的任务

当想要管理多个.bb 文件时,会引入许多额外的复杂性。显然,需要有一种方法来告诉BitBake哪些文件是可用的,以及那些想要执行的文件。每个配方都需要有一种方法来表达它的依赖关系,包括编译时和运行态。当多个配方提供相同的功能,或者有多个配方版本时,必须有一种表达配方首选项的方法。

该bitbake命令在不使用“--buildfile”或“-b”时仅接受“PROVIDES”。你不能提供任何其他东西。默认情况下,配方文件通常“提供”其“包名”,如以下示例所示:

$ bitbake foo

下一个示例“提供”包名称,并使用“-c”选项告诉BitBake只执行 do_clean任务:

$ bitbake -c clean foo

1.5.2.3。执行任务列表和配方和并

BitBake命令行当您指定多个目标时,BitBake命令行支持为单个目标指定不同的任务。例如,假设有恋歌目标(或配方)myfirstrecipe和mysecondrecipe,并且需要Bitbake为第一个配方运行taskA,为第二个配方运行taskB:

$ bitbake myfirstrecipe:do_taskA mysecondrecipe:do_taskB

1.5.2.4。生成依赖关系图

BitBake能够使用dot语法生成依赖图。可以使用Graphviz中的dot工具 将这些图形转换为镜像。

生成依赖关系图时,BitBake会将2个文件写入当前工作目录:

  • package-depends.dot: 显示两个任务间的依赖,这些依赖匹配Bitbake的内部任务执行列表。
  • pn-buildlist: 显示要编译的目标的简单列表。

要停止依赖于常见,请使用“-I”依赖选项,BitBake会从图中省略它们。将此信息保留下来可以生成更易读的图形。这样,您就可以从图中删除 DEPENDS继承的类,例如base.bbclass。

以下是创建依赖关系图的两个示例。第二个示例省略了从图中的OpenEmbedded中常见的依赖:

$ bitbake -g foo
$ bitbake -g -I virtual / kernel -I eglibc foo

1.5.2.5。执行多配置编译

    Bitbake可以使用一个简单的命令编译多个镜像或者包,不同的目标target需要不同的配置(多配置编译),在脚本中,每个目标都称为“multiconfig”。为了完成多配置的编译,必须使用编译目录下的相似的配置文件去单独定义每一个目标的配置文件,这些multiconfig配置文件是特定的,他们必须位于当前编译目录下的conf子目录下叫做multiconfig。下图是两个单独的目标的例子。

之所以需要这种文件层次结构,是因为在解析layer层之前不会构造BBPATH变量,因此,除非配置文件位于当前工作目录中,否则不可能使用配置文件作为预配置文件。每个配置文件至少必须定义一个机器和Bitbake用于编译的临时目录,实践中建议,这些临时目录在编译期间最好不要重叠使用;除了为每个目标单独配置文件外,还必须使能BitBake执行多配置编译,通过在local.conf配置文件中设置BBMULTICONFIG 变量来使能,例如,假设在编译目录中定义letarget1和target2的配置文件,下面的local.conf中的语句即使能了Bitbake执行多配置文件编译,也指定了两个额外的multiconfig;

BBMULTICONFIG = "target1 target2"

一旦目标配置文件就位,BitBake使能了多配置编译,就可以执行下面的编译命令:

$ bitbake [mc:multiconfigname:]target[[[mc:multiconfigname:]target] ... ]

下面arget1 和 target2的两个额外multiconfig的例子:

$ bitbake mc::target mc:target1:target mc:target2:target

1.5.2.6。使能多配置编译依赖

有时,依赖可以存在目标之间(multiconfigs)在一个多配置编译中,例如,假设要编译一个特定体系结构的镜像,另一个为不同体系结构编译的根文件系统要存在,换而言之,第一个多配置(multiconfig)的镜像决定了第二个多配置镜像的根文件系统。这个依赖关系本质上是,编译一个multiconfig的配方中的任务依赖于编译另一个multiconfig的配方中的任务的完成。

在多配置编译中使能依赖,必须使用下面的语句形式在recipe中声明依赖关系:

ask_or_package[mcdepends] = "mc:from_multiconfig:to_multiconfig:recipe_name:task_on_which_to_depend"

这个语句刚好的使用方式,例如采用两个multiconfig的例子:target1h和target2:

image_task[mcdepends] = "mc:target1:target2:image2:rootfs_task"

在这个例子中,from_multiconfig是"target1" 和  to_multiconfig 是 "target2",包含image_task的配方的镜像所依赖的任务依赖于编译image2的rootfs_task的完成,该任务与“target2”multiconfig相关联。

一旦建立了这个依赖。可以使用下面的bitbake命令编译"target1"的multiconfig

$ bitbake mc:target1:image1

该命令执行为“target1”multiconfig创建image1所需的所有任务。由于依赖关系,BitBake也通过rootfs_task执行“target2”multiconfig编译。让配方取决于另一个编译的根文件系统似乎没有那么有用。考虑一下image1配方中语句的更改:

image_task[mcdepends] = "mc:target1:target2:image2:image_task"

这种情况下,BitBake必须为"target2" 编译创建image2,因为"target1"的编译取决于它;

因为"target1" 和 "target2" 是使能多配置编译的和佩配置文件隔离,BitBake将每个编译红好的文件放置在各自的临时编译目录中。

【bitbake系列】bitbake常用命令的使用 BitBake是一个类似make的构建工具,由yocto项目和OpenEmbed项目共同维护。本文章描述bitbake常用命令的使用。 阅读详情

相关推荐

Bitbake--用户手册中文.docx

Bitbake--用户手册中文.docx

bitbake手册

bitbake是yocto的构建工具。

power1952的专栏 3088

OpenEmbedded中文手册

oe bitbake像所有的build工具一样(比如make,ant,jam)控制如何去构建系统并且解决构建依赖,但是不像那些功能单一的工程管理工具(比如make),bitbake不是基于把依赖写死了的makefile,而是收集和管理大量之间没有依赖关系的描述文件(这里我们称为包的配方),然后自动按照正确的顺序进行构建。(包的配方下文除非特殊说明都将简称为“配方”;oe都代表OpenEmbedded)更确切的说:openembedded是一些用来交叉编译,安装和打包的metadata(元数据)。oe已经被用来构建和管理很多的嵌入式发行版,包括OpenZaurus,Angstrom,Familiar和SlugOS.

Bitbake中文手册--目录

https://www.yoctoproject.org/docs/3.1.2/bitbake-user-manual/bitbake-user-manual.html bitbake中文手册 目录 1.概述 1.1。介绍 1.2。历史和目标 1.3。概念 1.3.1。配方 1.3.2。配置文件 1.3.3。Classes 1.3.4。Layers 1.3.5。附加文件(.append) 1.4。获得BitBake 1.5。BitBake命令 1.5.1。用法和语法 1.5.2

hubbybob1专栏 1523

bitbake中文手册.docx

yocto构建之bitbake手册中文版,学习linux下yocto编译原理必备

openEuler在虚拟机的网络配置

ethernet0.virtualDev 可以配置成其他类型的虚拟网络适配器。常见的选项包括:vlance - 用于模拟 AMD PCnet32 LANCE 网络适配器,支持10Mbps。e1000 - 用于模拟 Intel E1000 千兆网络适配器,支持1Gbps。e1000e - 用于模拟更现代的 Intel E1000e 千兆网络适配器。vmxnet - 用于 VMware 的自定义网络适配器,性能更好但需要安装 VMware Tools。

FHY1221的博客 2933

BitBake概述

BitBake概述翻译自官方文档,该章节可细读,多读几遍可加深对 配方、元数据、层等概念的理解。

u013921164的博客 4415

Linux云服务器上搭建《僵尸毁灭工程》私服全流程指南(避坑版)

本文详细介绍了在Linux云服务器上搭建《僵尸毁灭工程》私服的全流程指南,包括环境准备、SteamCMD安装、游戏服务器部署、内存优化配置及高级调优技巧。特别针对常见问题提供解决方案,帮助玩家快速搭建稳定的私服环境。

solidity8miner的博客 605

Bitbake中文手册--2(执行)

https://www.yoctoproject.org/docs/3.1.2/bitbake-user-manual/bitbake-user-manual.html bitbake中文手册 Bitbake中文手册--目录 Bitbake中文手册--1(概述) Bitbake中文手册--2(执行) Bitbake中文手册--3(语法) Bitbake中文手册--4(下载) Bitbake中文手册--5(词汇) Bitbake中文手册--附录 第2章执行 运行BitBake的主要目的是生

hubbybob1专栏 2126

使用海康机器人的SDK进行DWS开发时如何筛选不同类型的相机

使用MVIDCodeReader、MvCodeReaderSDK、MvVolMeasureSDK联合开发时,通常会做一些设备枚举列表,但是不同类型的设备需要枚举在不同的列表中,便于软件使用者配置参数,例如: 如何保证枚举出来的设备是可以选择的对应的设备。我们通常枚举出来的是这样的: 解决办法 在联合开发中,我们发现,只有MvVolMeasureSDK的枚举设备接口EnumStereoCamEx可以正确的只枚举出网络内的体积设备,其余的MVIDCodeReader、MvCodeReaderS

qq_29123967的博客 2733

RK3588实战:如何将8路1080P视频流实时拼接成一张超清全景图?聊聊AVS模块的那些事

本文深入解析了RK3588芯片的AVS模块如何实现8路1080P视频流的实时全景拼接技术。通过硬件加速、时间同步、几何校正和色彩均衡等关键技术,RK3588能够高效处理高密度视频流,输出超清全景图。文章还提供了优化策略和实战经验,帮助开发者充分发挥RK3588的潜力。

weixin_27014595的博客 747

yocto 知:BitBake用户手册

本手册提供有关 BitBake 工具的信息。这些信息试图尽可能独立于使用 BitBake 的系统,例如 OpenEmbedded 和 Yocto 项目。在某些情况下,手册中会使用构建系统上下文中的场景或示例来帮助理解。对于这些情况,手册清楚地说明了上下文。

canpool 3930

Python爬虫实战:爬取国家气象局台风路径数据的完整教程

国家气象局(如中国气象局)一般会在官方网站公布台风的实时路径,包括台风编号、名称、时间点、经纬度、中心气压、最大风速等信息。这些数据以图形和表格的形式呈现,有时以JSON或CSV文件形式下载。爬取这类数据,有助于构建台风数据库、历史路径分析、趋势预测等应用。本文详细介绍了如何通过Python爬取国家气象局发布的台风路径数据,涵盖了数据采集、解析、存储和可视化全流程。通过实践,你可以构建自己的台风数据库,结合机器学习开展路径预测和风险评估等高级分析。后续可结合深度学习技术,实现台风轨迹预测;

2201_76125261的博客 1028

BitBake用户手册

写在前面的废话:工作驱动,Yocto Project拔草,后面有心情就接着翻其他文档 src_url:https://www.yoctoproject.org/docs/3.1.2/bitbake-user-manual/bitbake-user-manual.html 1. 概述 欢迎使用《 BitBake用户手册》。 本手册提供有关BitBake工具的信息。 本文信息尽量独立于使用BitBake工具的系统,如OpenEmbedded和Yocto Project。 在某些情况下,本手册中使用了构建系统.

aaaLG的博客 4964

osg点云加载与渲染

osg点云加载与渲染

cangqiongxiaoye的博客 822

【归因】MATLAB实现最佳指纹法(待更新)

简述用于归因分析的最佳指纹法,及其MATLAB实现。

WW、forever的博客 4287

1 Bitbake概述

1概述 目录 1概述 1.1简介 1.2历史和目标 1.3概念 1.3.1食谱 1.3.2配置文件 1.3.3类 1.3.4层 1.3.5追加文件 1.4获取BitBake 1.5BitBake 命令 1.5.1用法和语法 1.5.2示例 欢迎使用 BitBake 用户手册。本手册提供有关 BitBake 工具的信息。这些信息试图尽可能独立于使用 BitBake 的系统,例如 OpenEmbedded 和 Yocto 项目。在某些情况下,手册中会使用构建系统上.

Jarvis的博客 902

国科大学习资料--数据挖掘(刘莹)--第三章习题及参考答案

国科大学习资料–数据挖掘(刘莹)–第三章习题及参考答案 国科大学习资料–数据挖掘(刘莹)–第三章习题及参考答案 国科大学习资料–数据挖掘(刘莹)–第三章习题及参考答案 第 3 章分类与回归 3.1简述决策树分类的主要步骤。 答:决策树生成的过程如下: (1)对数据源进行数据预处理, 得到训练集和测试集; (2)对训练集进行训练; (3)对初始决策树进行树剪枝; (4)由所得到的决策树提取分类规则; (5)使用测试数据集进行预测,评估决策树模型; 3.2给定决策树,选项有:(1)将决策树转换成规则,然后对结果

无名何许人的博客 3094

Bitbake中文手册--附录

https://www.yoctoproject.org/docs/3.1.2/bitbake-user-manual/bitbake-user-manual.html bitbake中文手册 Bitbake中文手册--目录 Bitbake中文手册--1(概述) Bitbake中文手册--2(执行) Bitbake中文手册--3(语法) Bitbake中文手册--4(下载) Bitbake中文手册--5(词汇) Bitbake中文手册--附录 ...

hubbybob1专栏 617

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Bitbake中文手册--3(语法)

https://www.yoctoproject.org/docs/3.1.2/bitbake-user-manual/bitbake-user-manual.html bitbake中文手册 Bitbake中文手册--目录 Bitbake中文手册--1(概述) Bitbake中文手册--2(执行) Bitbake中文手册--3(语法) Bitbake中文手册--4(下载) Bitbake中文手册--5(词汇) Bitbake中文手册--附录 ...

hubbybob1专栏 823

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Bitbake中文手册--5(词汇)

https://www.yoctoproject.org/docs/3.1.2/bitbake-user-manual/bitbake-user-manual.html bitbake中文手册 Bitbake中文手册--目录 Bitbake中文手册--1(概述) Bitbake中文手册--2(执行) Bitbake中文手册--3(语法) Bitbake中文手册--4(下载) Bitbake中文手册--5(词汇) Bitbake中文手册--附录 ...

hubbybob1专栏 576

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Bitbake中文手册--4(下载)

https://www.yoctoproject.org/docs/3.1.2/bitbake-user-manual/bitbake-user-manual.html bitbake中文手册 Bitbake中文手册--目录 Bitbake中文手册--1(概述) Bitbake中文手册--2(执行) Bitbake中文手册--3(语法) Bitbake中文手册--4(下载) Bitbake中文手册--5(词汇) Bitbake中文手册--附录 ...

hubbybob1专栏 708

BitBake用户手册-3.语法和操作

Bitbake用户手册,语法部分篇幅过长,单独整理一篇 英文原文链接:https://www.yoctoproject.org/docs/3.1.2/bitbake-user-manual/bitbake-user-manual.html#bitbake-user-manual-metadata 3. 语法和操作 BitBake文件具有自己的语法。 该语法与其他几种语言相似,但也具有一些独特的功能。 本节描述了可用的语法和运算符,并提供了示例。 3.1 基础语法 本节提供一些基本的语法示例。 3.1.1.

aaaLG的博客 7844

BitBake User Manual(译)

目录 1.概述 1.1。介绍 1.2。历史和目标 1.3。概念 1.3.1。食谱 1.3.2。配置文件 1.3.3。类 1.3.4。图层 1.3.5。附加文件 1.4。获得BitBake 1.5。BitBake命令 1.5.1。用法和语法 1.5.2。例子 2.执行 2.1。解析基本配置元数据 2.2。定位和解析食谱 2.3。偏好和提供者 2.4。依赖 2.5...

Suvine的专栏 4568

BitBake用户手册翻译笔记(一)

1. 概述 1.1. 介绍 BitBake是一个通用的任务执行引擎,并且支持shell和python,其主要服务于OpenEmbedded和Yocto,类似于GNU make,用于构建项目,差别主要在于以下几点: BitBake根据用于建立任务的元数据(metadata)执行任务。 元数据存储在recipe(.bb)文件、related recipe “append” (.bbappend)文件、配置文件(.conf)、underlying include 文件(.inc)以及类文件(.bbclass)中

chegxy的博客 3266

OpenEmbedded 中文手册

声 明: 本文章为openembedded英文手册的中文翻译版。手册版权归OE所有。本文档只供技术和学习交流之用,不得用于商业用途,使用本文档如造成损失,译者一概不负任何责任。 转载请注明出处和作者! 作者: dangbinghoo@gmail.com 特此声明! 更新日志: 2008年12月03日 改正笔误 2008年12月21日 更新到8.11 2010年0...

maze的专栏 2712
上一篇: Ubuntu20.04设置光标
下一篇: Bitbake中文手册--2(执行)
葫芦娃二娃
博客等级 码龄15年 1850粉丝 69原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值