2016-07-27 75 views
1

当试图为Gnuradio写一个OOT块时,我运行了cmake ../,然后运行了make。 make过程成功地建立一些对象,但是当它到达步骤:Gnuradio OOT没有看到消息来源?

Linking CXX executable test-XXXXXXXX 

存在的问题是:

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

YYYYYYYY处于.cc文件中定义的函数,这是我加入到_impl.cc为使用标题的块。尽管与_impl.cc文件位于相同的源目录中,但显然未找到此源。

Cmake明确警告不要对生成的Makefile进行任何修改,它是一个相当复杂的makefile,所以我会犹豫不决。在链接时是否有另一种方式可以指示制作额外的源代码?

+0

您将需要添加您的源代码。没有,这只是猜测,我不会反对在邮件列表上,讨论的辩证本质更容易接受,但是如此好的问题应该肯定包括有问题的代码。 –

回答

0

你最好打赌是看看你的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示例。