【Yocto】将编写软件已闭源的方式发布
2026/7/26 7:56:26 网站建设 项目流程

文章目录

  • 需求
  • 思路
  • 实现
    • Yocto_dev上的操作
    • Yocto_rel上的操作

需求

软件开发有两个工程:

  1. 用于开发的工程:Yocto_dev
  2. 用于发布给客户的工程:Yocto_rel

将Yocto_dev中的模块Foo,已闭源的方式发布到Yocto_rel中。

思路

  1. 在Yocto_dev上构建Foo,生成Foo的rpm包
  2. 在Yocto_dev上建立名为Foo_rel的layer,在Foo_rel中将Foo的rpm包安装到镜像中。

实现

Yocto_dev上的操作

在Yocto_dev上构建Foo。构建后便可以得到${WORKDIR}/deploy-rpms/${TRANSLATED_TARGET_ARCH}/${PN}-${PV}-${PR}.${TRANSLATED_TARGET_ARCH}.rpm包.
也可以在Yocto_dev的Foo.bb中添加以下代码,用于将rpm文档拷贝到build/rpm目录下。

inherit deploy do_deploy[nostamp]="1"do_deploy(){install-d"${TOPDIR}/rpm"install-m0644"${WORKDIR}/deploy-rpms/${TRANSLATED_TARGET_ARCH}/${PN}-${PV}-${PR}.${TRANSLATED_TARGET_ARCH}.rpm""${TOPDIR}/rpm"}addtask deploy after do_package_write_rpm before do_build

Yocto_rel上的操作

创建一个名为Foo_rel的layer,结构如下

Foo_rel - files -- rpm --- Foo.rpm - Foo_rel.bb

Foo_rel.bb的作用是将files/rpm/Foo.rpm的安装到镜像。而Foo.rpm是从Yocto_dev的构建中拷贝出来的rpm包。

DESCRIPTION="Install files"LICENSE="CLOSED"SRC_URI="file://rpm"SRCREV_${PN}="${AUTOREV}"DEPENDS="rpm-native"S="${WORKDIR}/rpm"INHIBIT_PACKAGE_STRIP="1"INHIBIT_PACKAGE_DEBUG_SPLIT="1"INSANE_SKIP:${PN}+="already-stripped dev-deps file-rdeps"INSANE_SKIP:${PN}-dev+="dev-elf dev-deps file-rdeps"do__compile(){:}do_install(){rpm2cpio ${S}/Foo.rpm|cpio-idmv--no-absolute-filenames-D ${D}}FILES:${PN}="/"FILES_${PN}-dev="/"

如果有多个rpm需要安装可以将rpm都放到一起然后将do_install()变更为

do_install(){forrpm_filein${S}/*.rpm;do rpm2cpio ${rpm_file}|cpio-idmv--no-absolute-filenames-D ${D}done}

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询