Redhawksdr 如何在设备上使用REDHAWK共享库依赖项?

Redhawksdr 如何在设备上使用REDHAWK共享库依赖项?,redhawksdr,Redhawksdr,我正在CentOS 7上使用REDHAWK 2.0.5。我正在通过IDE中的实现选项卡将共享库(SoftPkg)引用(例如rh.dsp)添加到我的设备中。这样就可以找到rh.dsp(位于$sdroot/dom/deps/rh/dsp)的头文件和库,并且设备构建时不会出现问题。但是,当设备在沙箱中启动时,会出现一个错误,说明找不到/deps/rh/dsp/dsp.spd.xml。在域中启动设备时,域管理器会抱怨“加载共享库时出错:libdsp.so.0:无法打开共享对象文件:没有此类文件或目录”

我正在CentOS 7上使用REDHAWK 2.0.5。我正在通过IDE中的实现选项卡将共享库(SoftPkg)引用(例如rh.dsp)添加到我的设备中。这样就可以找到rh.dsp(位于$sdroot/dom/deps/rh/dsp)的头文件和库,并且设备构建时不会出现问题。但是,当设备在沙箱中启动时,会出现一个错误,说明找不到/deps/rh/dsp/dsp.spd.xml。在域中启动设备时,域管理器会抱怨“加载共享库时出错:libdsp.so.0:无法打开共享对象文件:没有此类文件或目录”

我希望能够以与组件相同的方式将REDHAWK共享库与设备一起使用

我可以使用类似的设置来启动组件。我已经在组件的构造函数方法中打印出了LD_LIBRARY_路径,并观察到正在为我设置必要的路径。在沙箱中启动时,LD_LIBRARY_路径包含指向$sdroot/dom/deps中依赖项的路径。在域中启动时,依赖项缓存在$sdroot/dev中,LD_LIBRARY_路径包括这些路径

通过将$sdroot/dom/deps复制到$sdroot/dev/,我可以让我的设备在沙箱中启动。现已找到/deps/rh/dsp/dsp.spd.xml文件。LD_LIBRARY_路径现在包括$sdroot/dev/deps中的依赖项路径(令我惊讶的是,这也意味着看似必需的pkgconfig文件没有确定这些路径)。这是否意味着$sdroot/dev应该有自己的dep?为什么设备在这里而不是在$sdroot/dom中查看

将$sdroot/dom/deps复制到$sdroot/dev/不允许我在域中启动设备。它仍然无法打开libdsp.so.0

我在其他共享库中也遇到了同样的问题。这包括我自己的,以及我的REDHAWK安装附带的“rh”共享库(blueFileLib、fftlib、RedhawkDevUtils)


我是否遗漏了允许我与设备一起使用共享库的内容?或者这只支持组件吗?

REDHAWK共享库实际上是用于组件而不是设备。考虑一个设置,其中你的域在机器A上,并且你有几个GPPS在不同的机器上运行。您不希望必须管理所有GPP中的所有应用程序依赖项,事实上,某些应用程序可能具有冲突的依赖项版本。这些问题由REDHAWK共享库解决。启动应用程序时,域会将所有组件可执行文件及其依赖项复制到GPP并复制到自己的文件夹中。然后需要在启动可执行文件之前设置LD_LIBRARY_路径。这是通过LoadableDevice类实现的

但是,对于在节点上运行且未通过域部署的设备。或由可加载设备启动。它们由用户通过NodeBoter可执行文件和DeviceManager在特定硬件资源上手动启动和运行,因此由用户确保硬件资源具有所有运行时依赖项

如果您确实想要,您可以构建REDHAWK DSP库并将其安装到系统目录中:

  ./reconf
  ./configure --prefix=/usr/local --libdir=/usr/local/lib
  make -j3
  sudo make install
这将把DSP库安装到/usr/local/lib而不是sdroot中,但是它也会将XML文件放在/usr/local中的奇怪位置,这可能不是您想要的