1

我创建了一个使用 libsndfile 源代码库中的自动工具的 Eclipse CDT 项目。它在 Eclipse 中构建良好。如何修改这个项目以将其用作 REDHAWK 组件,就像使用 dsp 库和其他库一样?

谢谢!

4

2 回答 2

1

有多种方法可以添加共享库以使用 REDHAWK。最简单的方法是在 GPP 上安装库,然后按照 REDHAWK文档中“包含外部库”部分中概述的步骤进行操作。

您询问的 dsplib 中采用的方法略有不同。这将创建一个 REDHAWK 软件包库依赖项,该依赖项安装在 SDRROOT 中并在运行时与您的组件一起部署。以下是在 REDHAWK 中获取预先存在的 c++ 项目的步骤。这个答案不包括构建库或将其导入 eclipse 的过程,因为有很多关于这些主题的帖子:

  1. 将库导入您的 IDE。

  2. 构建您的共享库,以便您拥有一个共享对象(.so 文件)

  3. 将 .spd.xml 文件添加到您的库中,例如在此处找到的那个。

  4. 编辑这个 .spd.xml 文件:

4a。更新 localfile 标记以指向特定 .so 文件的位置。

4b。确保实现 id 标记的值是您的库的唯一修订号

  1. 如果 .project 文件不存在,请添加一个 .project 文件,例如在此处找到的文件。打开您的 .project 文件并确保包含以下性质:

    <nature>gov.redhawk.ide.natures.sca.project</nature>
    <nature>gov.redhawk.ide.natures.sca.component</nature>
    
  2. 您现在应该能够将您的软件包库拖到 SDR 根目录。

以下是更新您正在构建的各个组件以使用新库的步骤:

  1. 编辑 cpp 实现文件夹中的组件 Makefile.am。编辑 _CXXFLAGS 以添加头文件的路径,编辑 _LDADD 以添加库,并编辑 _LDFLAGS 以包含库的路径。有关agc 组件如何修改这些变量以包含 dsp 库的信息,请参见此示例

  2. 编辑 .spd.xml 文件以包含软件包依赖项。在 implementation 部分下添加对您的库的运行时依赖项,例如在此处找到的那个。具体来说-您的依赖项部分应如下所示:

    <dependency type="runtime_requirements">
      <softpkgref>
        <localfile name="XXXX"/>
        <implref refid="YYYY"/>
      </softpkgref>
    </dependency>
    

XXXX 是您在 SDRROOT 中安装的库 .spd.xml 文件相对于 dom 目录的路径(它应该以 /components 开头) YYYY 是您在上面 4b 中定义的具体实现值。

于 2013-08-15T14:02:55.670 回答
0

我无法添加评论,因此我为提供“答案”而道歉。

对我来说,Youssef 的描述非常适合使用共享库构建组件。但是,为了在运行时加载共享库,我需要在 makefile.am _LDFLAGS 中添加以下内容:

-Xlinker -rpath -Xlinker ../../dsp/Release

其中“/dsp/Release”是您创建的任何共享库的相对路径。

于 2014-06-17T19:41:29.917 回答