UHD在FreeBSD中产生链接器错误

时间:2011-05-03 13:49:01

标签: gcc freebsd uhd

我正在使用freebsd并尝试运行uhd:http://www.ettus.com/download这应该通常在freebsd下运行,但是当我尝试按照此处指定的方式构建它时遇到问题: http://www.ettus.com/uhd_docs/manual/html/build.html#build-instructions-unix

我明白了:

[ 73%] Building CXX object examples/CMakeFiles/benchmark_rx_rate.dir/benchmark_rx_rate.cpp.o
Linking CXX executable benchmark_rx_rate
../lib/libuhd.so.003.000: undefined reference to `uhd::set_thread_priority(float, bool)'
collect2: ld returned 1 exit status
 *** Error code 1

现在这似乎是一个链接器错误,但如何摆脱它呢?我尝试使用ldconfig设置路径,但这没有改变。也许你们中的一些人知道我可以继续搜索。

2 个答案:

答案 0 :(得分:0)

如果我做对了,libuhd get早先由这个CMake脚本构建。如果是,则此错误表示其CMakeLists.txt文件中存在错误。 看起来您正在构建使用libuhd的示例。我怀疑你是否需要它们。因此,要么在CMakeCache.txt中查找开关并重新生成Makefile,要么修改CMakeLists.txt以不包含示例dir。

您可以尝试另一件事 - 将CMAKE_EXE_LINKER_FLAGS设置为-L / usr / local / include。

答案 1 :(得分:0)

这是创建FreeBSD端口的完美情况。由于FreeBSD有自己的一致文件系统布局,因此通常需要稍微修改编译器和链接器标志(如arrowdodger所述)。

ports系统是一个框架,用于持久捕获这些配置更改,并使任何软件包像键入命令一样易于安装:

cd / usr / ports / category / application-name && make install clean

在一个完美的世界中,您将创建UHD端口,将其提交以供审查并添加到树中。如果您需要帮助了解如何执行此操作,FreeBSD Porter's Handbookfreebsd-ports mailing list是非常好的资源。