В настоящее время я реализую графический интерфейс для очень маленького приложения GNU Radio. Приложение просто подключится к устройству 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). Может ли кто-нибудь пролить свет на то, почему возникает эта проблема?
Заранее спасибо.