【发布时间】:2013-08-09 12:27:34
【问题描述】:
我创建了一个使用来自 libsndfile 源代码库的自动工具的 Eclipse CDT 项目。它在 Eclipse 中构建良好。我如何修改这个项目以将其用作 REDHAWK 组件,就像使用 dsp 库和其他库一样?
谢谢!
【问题讨论】:
标签: redhawksdr
我创建了一个使用来自 libsndfile 源代码库的自动工具的 Eclipse CDT 项目。它在 Eclipse 中构建良好。我如何修改这个项目以将其用作 REDHAWK 组件,就像使用 dsp 库和其他库一样?
谢谢!
【问题讨论】:
标签: redhawksdr
添加共享库以使用 REDHAWK 有多种方法。最简单的方法是在您的 GPP 上安装库,然后按照 REDHAWK documentation 中“包含外部库”部分中概述的步骤进行操作。
您询问的 dsplib 中采用的方法略有不同。这将创建一个 REDHAWK 软件包库依赖项,该依赖项安装在 SDRROOT 中,并在运行时与您的组件一起部署。以下是在 REDHAWK 中获取预先存在的 c++ 项目的步骤。这个答案不包括构建库或将其导入 eclipse 的过程,因为有很多关于这些主题的帖子:
将库导入您的 IDE。
构建您的共享库,以便您拥有一个共享对象(.so 文件)
将 .spd.xml 文件添加到您的库中,例如找到的 here。
编辑这个 .spd.xml 文件:
4a。更新 localfile 标记以指向特定 .so 文件的位置。
4b。确保实现 id 标记的值是您的库的唯一修订号
如果 .project 文件不存在,请添加一个 .project 文件,例如找到的 here。打开您的 .project 文件并确保包含以下性质:
<nature>gov.redhawk.ide.natures.sca.project</nature>
<nature>gov.redhawk.ide.natures.sca.component</nature>
您现在应该能够将您的软包库拖到 SDR 根目录。
以下是更新您正在构建的各个组件以使用新库的步骤:
编辑 cpp 实现文件夹中的组件 Makefile.am。编辑 _CXXFLAGS 以添加头文件的路径,编辑 _LDADD 以添加库,并编辑 _LDFLAGS 以包含库的路径。请参阅this example,了解 agc 组件如何修改这些变量以包含 dsp 库。
编辑 .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 中定义的具体实现值。
【讨论】:
我无法添加 cmets,因此对于提供“答案”表示歉意。
对我来说,Youssef 的描述非常适合使用共享库构建组件。但是,为了在运行时加载共享库,我需要在 makefile.am _LDFLAGS 中添加以下内容:
-Xlinker -rpath -Xlinker ../../dsp/Release
其中“/dsp/Release”是您创建的任何共享库的相对路径。
【讨论】: