【问题标题】:Using external libraries in REDHAWK在 REDHAWK 中使用外部库
【发布时间】:2013-08-09 12:27:34
【问题描述】:

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

谢谢!

【问题讨论】:

    标签: redhawksdr


    【解决方案1】:

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

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

    1. 将库导入您的 IDE。

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

    3. 将 .spd.xml 文件添加到您的库中,例如找到的 here

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

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

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

    1. 如果 .project 文件不存在,请添加一个 .project 文件,例如找到的 here。打开您的 .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 以包含库的路径。请参阅this example,了解 agc 组件如何修改这些变量以包含 dsp 库。

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

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

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

    【讨论】:

    • 谢谢!我最终弄清楚了大部分。但是,在您运行“make install”命令之前,某些源代码包似乎不会构建 .so 文件。因此,我不得不修改 Eclipse 中的 --prefix 选项以在 Release 目录中安装 .so 并将 build.sh 文件添加到 Eclipse 项目(更改构建命令)。这似乎奏效了。
    【解决方案2】:

    我无法添加 cmets,因此对于提供“答案”表示歉意。

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-30
      • 1970-01-01
      相关资源
      最近更新 更多