65.9K
CodeProject 正在变化。 阅读更多。
Home

Yocto 构建 IoT 开发工具包的一些提示 - 示例:添加 Java JRE

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2014年10月17日

CPOL

4分钟阅读

viewsIcon

15481

最近有人向我询问关于 Yocto 构建的更多文档。特别是,此人提到在将 Java 添加到自己的 IoT Yocto 构建时遇到困难。

引言

最近有人向我询问关于 Yocto 构建的更多文档。特别是,此人提到在将 Java 添加到自己的 IoT Yocto 构建时遇到困难。这个对话触发了以下帖子

为什么您不需要自己进行 Yocto 构建

首先:为了使用 IoT 开发套件,通常不需要接触 Yocto 构建。该开发套件提供了一个预构建的 SD 卡启动映像,用于放在您的 Intel(R) Galileo 开发板上。然后就可以开始了。此外,还有一个软件包存储库,您可以从中将更多软件包安装到您的映像中,例如,在添加以下行之后

	# cat >> /etc/opkg/iotdk.conf <<EOF

	src/gz all http://iotdk.intel.com/ipk/all

	src/gz i586 http://iotdk.intel.com/ipk/i586

	src/gz clanton http://iotdk.intel.com/ipk/clanton

	EOF

添加到您的 /etc/opkg/iotdk.conf 文件中,如 http://software.intel.com/sites/default/files/managed/f1/49/building_yocto_and__ipks.pdf(“使用 IOTDL 构建的存储库”部分)中所述,您就可以使用 opkg 从该存储库添加更多软件包,方法如下

	# opkg install <package name>	

要获取软件包列表,您可以使用

	# opkg list	

除此之外,在 http://software.intel.com/en-us/iotdevkit 上还有一个实时映像,包括编译 Galileo 目标的自有二进制文件所需的所有设置。

如何自己进行 Yocto 构建

但是,在某些情况下,上述方法可能无法完全满足您的需求,您可能希望自定义映像或轻松构建自己的 ipk 软件包...

这时您可能需要自己运行 Yocto 构建。对于 Yocto 初学者,我想推荐 Yocto 项目的在线文档(当前为 http://www.yoctoproject.org/docs/1.5.1/dev-manual/dev-manual.html)。这里不是教授 Yocto 概念的地方。但我尝试做的是分享一些提示,让您入门。

初始 Yocto 构建

如果要构建映像,您至少应有 40 GB 的可用磁盘空间。您需要安装各种开发工具(如 git)才能开始使用 Yocto。要从 intel-iot-devkit 开始,请转到 http://git.yoctoproject.org/cgit/cgit.cgi/meta-intel-iot-devkit/,您可以在那里找到 git 克隆的 git 详细信息。在我的系统上,我的 Yocto 构建根目录位于

 YBR = /Quark/meta-intel-iot-devkit/

注意

除了 master 之外,还有其他分支。

您可以按照下面的步骤构建映像

  1. 检查 ${YBR}/build/conf/local.conf 配置。您可能需要修改并行构建的设置
  2. 通过 sourcing 设置 Yocto 构建环境
     source ${YBR}/iot-devkit-init-build-env
  3. 这会将您的 pwd 直接更改为 ${YBR}/build。现在您可以使用 bitbake 开始构建,例如
     bitbake iot-devkit
  4. 现在稍作休息(或者喝杯咖啡)- 如果没有问题,您将在 ${YBR}/build/tmp/deploy/images 中找到您的已完成映像,并在 ${YBR}/build/tmp/deploy/ipk 中找到 ipk 软件包。根据您的构建系统,这可能需要几个小时。

 

检查可用的层

Yocto 使用各种所谓的来组织软件包。您可以在 http://layers.openembedded.org/layerindex/branch/master/layers/ 找到各种可用的层。

在我们的例子中,您可以找到一个 meta-oracle-java 层,这是我们要构建的 Java 软件包的一个很好的起点。我们将使用和修改此层,使用下面的步骤。要编写您自己的层,请查看 Yocto 手册。

  1. 将该层 git 克隆到 ${YBR} 中。
  2. 将该层添加到 ${YBR}/build/conf/bblayers.conf 中的 BBLAYERS 变量中
  3. 由于 Oracle Java 带有专有许可证,因此您必须通过在 ${YBR}/build/conf/local.conf 中添加 LICENSE_FLAGS_WHITELIST += "oracle_java" 来将该许可证列入白名单
  4. 不幸的是,meta-oracle-java 层似乎有点过时 - 特别是,JRE 的直接下载链接不再有效。似乎您需要先接受许可才能从 Oracle 下载 JRE。因此,我下载了 tgz 并将其放在本地文件夹中。显然,需要相应地修改 meta-oracle-java/recipes-devtools/oracle-java/oracle-jse-jre-i586_1.7.0.bb 中的 URI 条目(在我的例子中为 SRC_URI = "file:///Quark/meta-intel-iot-devkit/meta-oracle-java/jre-7u51-linux-i586.tgz")。还需要相应地修改 meta-oracle-java/recipes-devtools/oracle-java/oracle-jse.inc 中的 md5 校验和和 LIC_FILES_CHKSUM 许可证哈希。最简单的方法是先保持不变,bitbake 将打印一条错误消息,其中包括正确的新哈希。

之后,您应该会看到类似的内容

	$ bitbake-layers show-layers

	layer                 path                                      priority

	==========================================================================

	meta                  /Quark/meta-intel-iot-devkit/meta         5

	meta-oe               /Quark/meta-intel-iot-devkit/meta-oe      6

	meta-iot-devkit       /Quark/meta-intel-iot-devkit/meta-iot-devkit  6

	meta-yocto            /Quark/meta-intel-iot-devkit/meta-yocto   5

	meta-intel            /Quark/meta-intel-iot-devkit/meta-intel   5

	meta-clanton-bsp      /Quark/meta-intel-iot-devkit/meta-clanton-bsp  6

	meta-galileo          /Quark/meta-intel-iot-devkit/meta-galileo  9

	meta-hob              /Quark/meta-intel-iot-devkit/meta-hob     1

	meta-oracle-java      /Quark/meta-intel-iot-devkit/meta-oracle-java  6

然后您就可以使用

 $ ${YBR}/bitbake oracle-jse-jre-i586

成功后,您将在 ${YBR}/build/tmp/deploy/ipk 中找到新软件包。您可以将此软件包复制到您的系统并使用 opkg 安装它。

成功安装后,我们现在可以在目标上运行 Java - 在这里使用强制性的起点 Java 类

	# /usr/jre1.7.0_51/bin/java hello      

	Hello World	
© . All rights reserved.