我目前正在为一个非常小的 GNU Radio 应用程序实现一个 GUI 界面。应用程序将简单地连接到 USRP 设备,接收一些 IQ 样本并通过 TCP 套接字转发它们。按照 gqrx 项目文件示例,我能够运行一些示例 gnuradio 块(来自 gr-analog 的拨号音示例)。当我尝试将 UHD/USRP 块包含到项目中时,问题就开始了。基本上,Qt 创建者报告以下错误:
/usr/local/lib/libgnuradio-uhd.so:-1: error: undefined reference to `uhd::usrp::multi_usrp::ALL_MBOARDS
.pro文件配置如下图:
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = USRPDialog
TEMPLATE = app
SOURCES += main.cpp \
usrpdialog.cpp
HEADERS += \
usrpdialog.h \
ui_sdrdialog.h
FORMS += \
sdrdialog.ui
CONFIG += c++11
CONFIG += link_pkgconfig
PKGCONFIG += gnuradio-analog \
gnuradio-blocks \
gnuradio-digital \
gnuradio-filter \
gnuradio-fft \
gnuradio-runtime\
gnuradio-uhd
LIBS += -lboost_system$$BOOST_SUFFIX -lboost_program_options$$BOOST_SUFFIX -lboost_thread$$BOOST_SUFFIX
LIBS += -luhd -lgnuradio-uhd
这是调用 uhd::usrp_source 对象的函数
void USRPDialog::createFlowgraph()
{
tb = gr::make_top_block("usrp");
d_tcpSource = gr::blocks::tcp_server_sink::make(sizeof(gr_complex),"127.0.0.1",d_rxTCPPort,true);
d_usrpSource = gr::uhd::usrp_source::make(uhd::device_addr_t(ipAddressLineEdit->text().toStdString()),
uhd::stream_args_t("fc32"));
//Connecting blocks
tb->connect(d_usrpSource,0,d_tcpSource,0);
tb->start();
}
UHD 安装在我的系统中(我系统中的 GNU Radio 流程图可以毫无问题地连接到 USRP 设备)。任何人都可以解释为什么会出现这个问题吗?
提前致谢。