在REDHAWK中使用外部库

时间:2013-08-09 12:27:35

标签: redhawksdr

我创建了一个Eclipse CDT项目,该项目使用libsndfile源代码库中的autotools。它在Eclipse中构建良好。如何修改此项目以将其用作使用dsp库和其他库的方式的REDHAWK组件?

谢谢!

2 个答案:

答案 0 :(得分:1)

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

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

  1. 将库导入IDE。

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

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

  4. 编辑此.spd.xml文件:

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

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

    1. 添加.project文件(如找不到的文件,例如找到的文件here)。打开.project文件并确保包含以下属性:

      <nature>gov.redhawk.ide.natures.sca.project</nature>
      <nature>gov.redhawk.ide.natures.sca.component</nature>
      
    2. 您现在应该可以将sofpackage库拖到SDR根目录了。

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

      1. 在cpp实现文件夹中编辑Makefile.am组件。编辑_CXXFLAGS以添加头文件的路径,添加库的_LDADD和_LDFLAGS以包含库的路径。有关agc组件如何修改这些变量以包含dsp库,请参阅this example

      2. 编辑.spd.xml文件以包含softpackage依赖项。在实现部分下,在库中添加运行时依赖项,例如找到的here。具体来说 - 你的依赖部分应该如下:

        <dependency type="runtime_requirements">
          <softpkgref>
            <localfile name="XXXX"/>
            <implref refid="YYYY"/>
          </softpkgref>
        </dependency>
        
      3. XXXX是SDRROOT中安装的库.spd.xml文件相对于dom目录的路径(它应该以/ components开头)YYYY是上面4b中定义的特定实现值。

答案 1 :(得分:0)

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

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

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

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