现在我正在编写与使用yocto的嵌入式系统相关的主人。
我有一个ua-SDK(包括源代码)。我需要将ua包安装到sato-image
,它在Raspberrypi上运行。
首先,我写了一个食谱" opcua"像这样:
SUMMARY = "this is a recipe for building opc-ua sdk package"
LICENSE = "MIT & RCL & OpenSSL & LGPL-3.0 & Apache-2.0"
LIC_FILES_CHKSUM = "file:///home/yocto/workspace/poky/rpiHouseHello/tmp/work/armv6-vfp-poky-linux-gnueabi/ua-new/1.0-r0/license-destdir/ua-new/generic_Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10
SRC_URI = "file:///home/yocto/workspace/poky/rpiHouseHello/downloads/uasdkcppclient-src-linux32-x86-gcc4.5.1-v1.4.2-275.tar.gz"
S = "${WORKDIR}/sdk/src"
DEPENDS += "libxml2 openssl"
inherit cmake
INSANE_SKIP_ua-new += "dev-deps"
在opcua
之后成功安装了$bitbake opcua
个包。然后我尝试通过编写另一个opcua
这样的食谱
sato-with-ua
包添加到sato-image中
DESCRIPTION = ""
IMAGE_FEATURES += "splash package-management x11-base x11-sato ssh-server-openssh hwcodecs dbg-pkgs tools-debug debug-tweaks"
LICENSE = "MIT"
inherit core-image
IMAGE_INSTALL += " ua ua-dbg ua-staticdev ua-dev"
它也成功安装。之后,我使用以下方法从此图像中提取SDK:
$bitbake sato-with-ua -c populated_sdk
也没问题。之后,我尝试检查这个提取的SDK的功能。我的导师给了我一个用c ++编写的测试项目。我尝试在eclipse中构建这个项目。
但问题来了,Eclipse无法通过链接库找到调试库--- lib * d(例如libuabased.a)。我发现我的包中有libuabase.a
但没有libuabased.a
。包裹的位置:/home/yocto/workspace/poky/rpiHouse/tmp/work/armv6-vfp-poky-linux-gnueabi/opcua/1.0-r0/packages-split
。在Eclipse中,我们在调试版本中开发项目,因此它也需要调试版本的库。
我很困惑,为什么yocto只安装了发布库而不是调试库。两者都包含在源代码中。 yocto只能安装一种类型? 所以我尝试修改opcua配方,将调试库包含到我的packages-split中。在阅读了yocto的参考资料之后,我将以下内容添加到我的食谱中,并且#34; opcua":
PACKAGES =+ " ${PN}-alibd ${PN}-solibd"
FILES_${PN}-alibd = "${libdir}/libstackd.so"
FILES_${PN}-solibd = "${libdir}/libuabased.a ${libdir}/libuaclientd.a ${libdir}/libuapkid.a ${libdir}/libxmlparserd.a"
在bitbake opcua
之后我确实得到了两个新包${PN}-alibd and ${PN}-solibd
,但两个包都是空的。我列出的所有这些库都不包括在内。
我的第一个问题是,此变量${libdir}
是否表示我们的主机/usr/lib
?我发现该目录中没有lib*d.a
个文件。所以我想也许我理解这个变量会犯错误。这个${libdir}
提到了什么?
我的第二个问题,如何在咬完食谱后将这些调试库安装到我的包中?我的目标是我可以在sato-with-ua
图像und
中获取这些调试库,然后从该图像中提取SDK。这个SDK包含了那些调试库,以便我可以在Eclipse中链接它们来开发我的项目正确。
我很抱歉,我讲了一个很长的故事。这是我第一次制作与软件相关的东西。所以我请求你的appologise。