【问题标题】:Gnuradio OOT not seeing sources?Gnuradio OOT 没有看到来源?
【发布时间】:2016-08-26 15:36:56
【问题描述】:

在尝试为 Gnuradio 编写 OOT 块时,我运行了 cmake ../,然后运行了 make。 make 过程成功构建了一些对象,但是当它到达步骤时:

Linking CXX executable test-XXXXXXXX

有问题:

libgnuradio-XXXXXXXX.so: undefined reference to 'YYYYYYYY'

YYYYYYYY 是在.cc 文件中定义的函数,我使用标题将其添加到块的_impl.cc 中。尽管与_impl.cc 文件位于同一源目录中,但显然找不到此源。

Cmake 明确警告不要对生成的 Makefile 进行任何修改,无论如何它是一个相当复杂的 makefile,所以我会犹豫是否尝试弄乱它。链接时是否有另一种方法可以直接让 make 包含该附加源?

【问题讨论】:

  • 您需要添加源代码。如果没有,这只是猜测,在邮件列表中我不太反对,因为讨论的辩证性质更容易接受,但在如此问得好的问题上,绝对应该包括有问题的代码。

标签: gnuradio


【解决方案1】:

最好的办法是查看 OOT 文件夹顶部的 CMakeLists.txt。您很可能会看到链接问题并且不满足包依赖关系。 cmake find_package 实用程序可用于确定系统上是否存在依赖项。如果您查看主 OOT 文件夹下的 cmake/Modules 目录,应该有几个示例。 Cmake 附带了许多模块,因此很可能您需要的模块已经存在。

通过在主 CMakeLists.txt 文件中添加一些 find_package 逻辑,然后吹走构建目录并重新创建并执行“cmake ../”,依赖关系问题应该很明显。换句话说,无论 libgnuradio-*.so 认为缺少什么,都必须属于一个未安装在您的系统上的包。使用 find_package 会确认,然后答案是安装。

查看其他一些 CMakeLists.txt 文件,例如 gr-digital 中的 find_package 示例。

【讨论】:

    猜你喜欢
    • 2019-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-16
    • 1970-01-01
    • 2012-09-01
    相关资源
    最近更新 更多