Redhawksdr libvolk中没有符号

Redhawksdr libvolk中没有符号,redhawksdr,Redhawksdr,如果在系统上检测到volk库,我已经在我们的一些内部组件中使用了volk。我知道GNUHawk在sdroot中的deps文件夹中打包了一个版本的volk。我们刚刚创建了一个新的Linux映像,其中安装了CentOS 6.6和Redhawk 1.10.0-10,可从联机RPM获得。之前,我们一直在从源代码构建gnuhawk。在运行自定义组件时,由于符号表已从与gnuhawk的RPM版本打包的libvolk中剥离,因此会出现符号查找错误 解决这个问题的建议方法是什么?我们是否应该使用我们自己的lib

如果在系统上检测到volk库,我已经在我们的一些内部组件中使用了volk。我知道GNUHawk在sdroot中的deps文件夹中打包了一个版本的volk。我们刚刚创建了一个新的Linux映像,其中安装了CentOS 6.6和Redhawk 1.10.0-10,可从联机RPM获得。之前,我们一直在从源代码构建gnuhawk。在运行自定义组件时,由于符号表已从与gnuhawk的RPM版本打包的libvolk中剥离,因此会出现符号查找错误


解决这个问题的建议方法是什么?我们是否应该使用我们自己的libvolk版本创建另一个软件包依赖项,而不是使用gnuhawk libvolk

使用与gnuhawk打包的volk共享对象不应该有任何问题,但我必须获得更多信息才能确定发生了什么。我猜您可能是针对libvolk的系统安装进行编译,然后针对gnuhawk版本运行,这可能会导致符号查找问题

确保您正在编译和链接SDRROOT中的volk文件。您应该能够使用pc文件($sdroot/sdr/dom/deps/gnuhawk/lib/pkgconfig/volk.pc)使用autotools自动设置CXX&LD标志

您可以使用readelf查看libvolk对象中的符号。在libvolk.so.0.0共享对象上使用readelf-s,它应该打印出符号表。然后,您可以确认所讨论的符号丢失,并开始查找您最初是如何与该符号链接的


当然,您可以使用volk头和共享对象创建自己的共享对象库。这为您提供了更新volk的灵活性,并打破了对gnuhawk的依赖。

使用readelf时,它不会返回任何符号。您可以看到GNUHAWK的RPM安装中安装的.so文件中没有.symtab条目。这是由于一些开发机器从源代码构建GNUHAWK,而另一些只是使用RPM版本。我希望避免安装额外的依赖项,而只使用GNUHAWK。在您看来,从长远来看,仅仅创建我们自己的版本并将其与我们的组件打包是否更有意义?