首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用PREFERRED_VERSION指定之前的食谱在Yocto bitbake中不起作用?

在Yocto Project的BitBake构建系统中,PREFERRED_VERSION是一个用于指定特定软件包版本的变量。如果你发现使用PREFERRED_VERSION指定之前的食谱版本不起作用,可能是由于以下几个原因:

基础概念

PREFERRED_VERSION变量允许开发者为特定的软件包指定一个首选版本。这在有多个版本的软件包可用时非常有用,可以确保构建系统使用指定的版本而不是默认版本。

可能的原因

  1. 变量作用域PREFERRED_VERSION需要在正确的层和作用域中设置。它通常在local.conf文件或特定层的conf/layer.conf文件中设置。
  2. 版本冲突:可能存在其他地方定义了相同软件包的不同版本,导致冲突。
  3. 缓存问题:BitBake可能会缓存之前的构建结果,如果更改了PREFERRED_VERSION但没有清除缓存,可能会看到旧的行为。
  4. 语法错误:设置PREFERRED_VERSION时可能存在语法错误,例如拼写错误或格式不正确。

解决方法

  1. 检查变量设置: 确保PREFERRED_VERSION在正确的文件中设置,并且格式正确。例如,在local.conf中添加:
  2. 检查变量设置: 确保PREFERRED_VERSION在正确的文件中设置,并且格式正确。例如,在local.conf中添加:
  3. 其中${PN}是软件包的名称。
  4. 清除缓存: 运行以下命令清除BitBake缓存并重新构建:
  5. 清除缓存: 运行以下命令清除BitBake缓存并重新构建:
  6. 检查冲突: 查看所有相关的配置文件(如local.conf、各层的conf/layer.conf)以确保没有其他地方定义了冲突的版本。
  7. 使用BBVERSION: 如果PREFERRED_VERSION仍然不起作用,可以尝试使用BBVERSION变量来强制指定版本。

示例代码

假设你想为名为example-package的软件包指定版本1.2.3,可以在local.conf中这样设置:

代码语言:txt
复制
PREFERRED_VERSION_example-package = "1.2.3"

然后清除缓存并重新构建:

代码语言:txt
复制
bitbake -c cleanall example-package
bitbake example-package

应用场景

这种设置在需要确保系统使用特定版本的库或应用程序时非常有用,特别是在维护旧系统或进行兼容性测试时。

通过以上步骤,你应该能够解决PREFERRED_VERSION指定之前的食谱版本不起作用的问题。如果问题仍然存在,建议检查BitBake的日志输出,以获取更多关于失败原因的信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

yocto | 基于Linux的定制系统跑Qt app(第一集)

即是Yocto的本质;此外Poky还有另外一层意思,使用Poky系统得到的默认参考 Linux 发行版也叫Poky(当然,我们可以对此发行版随意命名)。...比如autotools该类,其中包含Autotools使用的任何应用程序的常用设置。这个概念有点像C++中的基类。...meta-pokypoky发行版本的配置数据,包含了bitbake工具、编译工具链、BSP、诸多程序包或层,是yocto的核心目录,上面描述的bitbake目录其实就是软链接到poky目录下的bitbake...)│ │ ├── deploy (编译输出, 部署文件目录,最终需要的文件(sdk boot rootfs image等)都在该目录中,由DEPLOY_DIR变量指定)│ │ ├── buildstats...class文件是抽象的公共代码,给各个package使用)│ ├── conf( 配置文件(.conf)的核心集合,比如所有的bblayers的配置文件都是从该目录下的bitbake.conf文件中衍生的

23410
  • 02 - Yocto Project (YP)快速入门

    除此之外,Yocto Project使用基于OpenEmbedded(OE)项目的构建主机,该项目使用BitBake工具构建完整的Linux映像。...不同点挺多的,如果之前了解过Buildroot,学习Yocto会事半功倍。两者的不同点这里不做展开说明。 2. Yocto 中的基本概念 熟悉Yocto项目中的一些基本概念 : ?...通过生活中实际的例子来体现 Yocto: 开源项目名称,构建自定义的Linux 系统 Poky: Yocto项目中提供一个构建Linux的完成示例。...Metadata: 元数据是Yocto项目的核心,基本元素的描述与来源。 Yocto中相关的概念比较多,有的时候不太容易理解。这里以生活中一个示例通俗易懂的连贯起来。...各种材料准备好了,BitBake代表厨师(看如何做出一道菜的)。 3.Yocto 实战 为了适应不同的环境,这里在Docker 构建Yocto 。

    4.8K00

    平头哥 TH1520 RISC-V BeagleV-Ahead使用Thead-Yocto自定义构建系统 最详细版本

    要使用 Yocto 项目工具,您可以下载 Poky 并使用它来引导您自己的发行版。请注意,Poky 不包含二进制文件 - 它是如何从源代码构建您自己的自定义 Linux 发行版的工作示例。...如果您对yocto很感兴趣,想深入学习使用可以直接访问 官方提供的 使用教程 https://docs.yoctoproject.org/ ,在这个页面内,官方针对于 整个yocto做了非常详细的图文教程...ubuntu18安装如下依赖包之前,请确保你的Ubuntu18系统可以联网,且使用 sudo apt update 命令更新过软件源。...元层数据 ,在ubuntu18.04 终端下执行如下命令,在 ~家目录下指定: cd ~ git clone https://gitee.com/thead-yocto/xuantie-yocto.git...BeagleV-Ahead 开发板 配置项以及选择配套的 系统镜像了,我这里使用 MACHINE=light-beagle bitbake thead-image-linux 也就是表示 编译后的主板是

    57240

    yocto 离线编译

    使用yocto编译一个软件包时,一般会先在本地寻找下载好的源码包,如果不存在则根据配置从网络下载。 添加本地源码包 为了支持离线编译,添加一个包的配置文件后,需要在本地也准备好源码包。...可以先打开网络连接,让yocto帮我们下载好所需的源码包。最终连同源码包一起提交到本地仓库中,后续即不再需要网络连接。...打开网络的方式: 在 build/conf/local.conf 配置文件中,修改 BB_NO_NETWORK = "0" 添加好bb文件,进行一次编译,或者,单独执行fetch进行下载,如 bitbake...android-tools -c fetch 指定commit id 如果已经在本地添加了源码包,但每次编译,yocto还是提示需要网络的话,则可能是未配置具体的commit id。...,如果没有指定具体的commit id,则yocto每次还是需要到远程仓库去获取一下信息。

    2.6K20

    修改文件变化通知机制Inotify的限制

    CentOS 7.9自带的GCC是4.8.5,太旧了。PetaLinux要求gcc 6或者更高版本。 通过工具SCL,是可以在同一个系统上编译,安装,并且使用多个版本的软件。...() File "/proj/hankf/vck190/vck190-0316-peta/components/yocto/layers/core/bitbake/lib/pyinotify.py"...更方便的办法,是使用网络传输到单板的TF卡。Windows的winscp可以用来完成这个工作。...但是Linux上流行的软件FileZilla 3.7.4.1, 与单板使用的Dropbear不能完成密钥交换,不能建立SFTP连接。下面是FileZilla报告的消息。...建议删除文件“~/.ssh/known_hosts”中的单板对应的条目,gFTP就能建立连接。如果没有其它应用程序使用这个文件,可以删除整个文件。 rm ~/.ssh/known_hosts gftp

    1.5K40

    构建一个适合stm32mp157系列开发板的嵌入式Linux系统

    6.2.2.2 下载源码 通过repo管理多个git仓库中的源码,可以及时更新最新代码,以方便开发者学习使用。 对于不同版本的STM32MP157开发板,要执行不同的命令下载源码。...分别是buildroot构建生成的8.4以及yocto生成的9.3工具链,开发板系统默认安装的系统使用的是通过yocto编译构建,所以如果只想针对于文件系统应用做开发或者编译内核uboot等操作,建议只使用...6.3.1.2 手动指定 先设置PATH环境变量,然后在make编译时指定ARCH架构 CROSS_COMPILE交叉编译工具链(执行make命令时指定的参数,只对当前命令有效;下次执行make时仍需要再次指定那些参数...③ 使用Yocto NXP、ST等公司的官方开发包是使用Yocto,但是Yocto语法复杂,并且Yocto动辄10GB,下载安装都很困难,普通笔记本编译可能需要2-3天甚至更久,非常不适合初学者(我们不推荐使用...6.9.3 扩展命令 6.9.3.1 单独编译某个包 比如单独编译内核,需要先清除之前的编译缓存再进行编译 book@100ask:~/100ask_stm32mp157_pro-sdk/Yocto_Dunfell

    5K50

    OpenBmc开发8:devtool简介与使用

    大家好,又见面了,我是你们的朋友全栈君。 1 简介 devtool是yocto中的一个工具,此命令行工具作为可扩展SDK(eSDK)的一部分,是基础组件。...可以使用devtool来帮助构建,测试和打包eSDK中的软件。可以使用该工具有选择地将构建的内容集成到OpenEmbedded构建系统构建的映像中。...一般我们使用该工具主要用于修改源码,在修改后将提交加入到指定的layer中。...该命令利用了工作目录下的devtool。该命非常灵活,可让您将源代码提取到工作区或单独的本地Git存储库中,并使用不需要提取的现有代码。...4 使用示例 4.1 提取源码 查找软件包 bitbake -s | grep bitbake -s 命令可以查看全部软件包名。

    3.4K11

    linux 嵌入式Linux构建方法《Rice linux 学习开发》

    层可以添加到你的配置中,以添加未特别包含在市面上版本中的独特功能;例如,“meta-browser” 层包含 Web 浏览器的清单,可以轻松为您的系统进行构建。...Yocto有一个内置的缓存机制,当它确定用于构建特定包的参数没有改变时,它允许它重新使用先前构建的组件。...Yocto,通过配置好环境变量后,比bitbake xxx 就等待漫长的时光。资源的消耗,编译的时间,已经困扰了我很长时间,目前要学习如何解决这些问题,后续如果有学习捷径,我在写一篇文章。...个人感想: 我在使用buildroot之前,我在学习嵌入式Linux是没有通过什么构建方法的,只是裸露的uboot,kernel,根文件系统。每一个都要自己去编译,创建。...这是我第一次使用构建工具时比较吸引我的。它比Yocto编译速度快很多。学习难度大大减小。

    7.8K20

    12 - 联发科MTK8516 开发环境搭建

    Code Download 如果按照该教程下载的源码, 编译的时候会发现很多第三方库的链接已经失效了,需要手动去更改,发现不止一个库,可想而知,链接中SDK已经没有维护了,所以说想要开发量产的话,需要联系...─ timerd ├── upg_control ├── upg_control_cast ├── user_interface ├── utils └── wifi_setting Build 编译之前需要安装一下开发依赖包.../oe-init-build-env $ bitbake mtk-image-aud-8516 2>&1 | tee build.log 第一次编译会花费较长的时间,过程中会去下载第三方的安装包,大概...3h左右, 之后编译只需要指定好downloads目录即可....成功编译后,生成的image保存在:build/tmp/deploy/images/aud8516-ztk-basic 编译过程中的文件系统: build/tmp/work/aud8516p1v2_consys_slc-poky-linux

    2.7K10

    【swupdate文档 三】SWUpdate: 嵌入式系统的软件升级

    输出可以使用帧缓冲设备显示在LCD上,也可以定向到串行通讯端口上(Linux控制台)。 它通常用于单拷贝方案中,在initrd中运行(用Yocto提供的配方生成)。...当然,使用流式处理,则不可能在安装之前检查整个交付的软件。临时副本仅在从网络更新时使用。 当映像存储在外部存储上时,不需要该副本。...在Yocto构建系统中,: bitbake swupdate 这将进行包的构建 bitbake swupdate-image 这将构建一个救援镜像。...但是除了最常用的嵌入式构建系统Yocto或Buildroot之外,在某些情况下还会使用标准的Linux发行版。...要检查生成的镜像,可以运行以下命令: swupdate -c -i my-software_1.0.swu 对复合镜像的支持 在Yocto中可以自动生成单个镜像。

    4.3K11

    autotools及Yocto下通过autotools编译

    一样新的东西的由来,往往因为之前的东西用的很不爽,然后更具弊端创造出更加容易使用的东西,比如在大型的项目中,如Linux,他是通过Makefile的方式进行编译。...AC_PROG_CC 指定编译器,默认GCCAC_CONFIG_FILES 生成相应的Makefile文件,不同文件夹下的Makefile通过空格分隔。...在本例中, 使用了foreign等级, 它只检测必须的文件。 bin_PROGRAMS = rice:生成的可执行文件名称,生成多个可执行文件,可以用空格隔开。...这也就是我们上面为什么要压缩的原因。不然你要一个文件一个文件的指向。 S:到Bitbake放置以解压文件所在目录的完整路径。...do_install():将我们编译完的源文件放进板子的根文件系统目录中。 inherit:继承。这里继承autotools。 然后我们在Yocto进行编译,然后将镜像烧录到板子上。

    1.6K20

    STM32MP157D-DK1 Qt程序交叉编译与运行测试

    上篇文章介绍了STM32MP157D-DK1开发板Qt镜像的构建,通过在Ubuntu中重新编译带有Qt功能的系统来实现。...本篇在上篇的基础上,继续搭建Qt的交叉编译环境,实现Qt程序在Ubuntu中编译,在STM32MP157板子中运行。 1 编译安装SDK 在上篇编译系统镜像的基础上,继续编译和安装SDK。...,来安装SDK到指定目录,我的是安装到Developer-Package/SDK目录 ....: 2 交叉编译Qt 在刚才指定安装SDK的目录中,自带了许多Qt的例子,可以使用交叉编译器来编译一个Qt程序试一下,比如: cd ~/myTest/STM32MP157/STM32MPU-Ecosystem-v5.0.0...Qt程序交叉编译环境的搭建过程,并通过一个实际的Qt程序,编译后在板子中实际运行测试,验证Qt编译环境的可用性。

    21410

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券