Prerequisites not installed through pip:
$ brew list --versions gcc git cmake boost cppunit log4cpp swig python doxygen pygtk fftw gsl qt qwt portaudio uhd sdl
boost 1.69.0_2
cmake 3.14.3
cppunit 1.14.0
doxygen 1.8.15
fftw 3.3.8
gcc 8.3.0_2
git 2.21.0
gsl 2.5
log4cpp 1.1.3
portaudio 19.6.0
pygtk 2.24.0_2
python 3.7.3
qt 5.12.3
qwt 6.1.3_4
sdl 1.2.15_1
swig 4.0.0
uhd 3.14.0.0
$ python --version
Python 3.7.3
- pip was used to install
mako numpy cheetah3 pyqt5
- Set and confirm qt_dir environment variable
$ echo $qt_dir
/usr/local/Cellar/qwt/6.1.3_4
Just the basics.
# docs note that install must be in root-owned folder otherwise icons wont build
sudo mkdir -p /usr/local/src
sudo chmod 777 /usr/local/src
cd /usr/local/src
# -recursive needed for the volk submodule
git clone --recursive https://github.com/gnuradio/gnuradio.git
cd gnuradio
mkdir build
cd build
# from hint in slack channel. takes care of qwt as framework
cmake -DENABLE_DEFAULT=Off -DENABLE_GNURADIO_RUNTIME=On -DENABLE_VOLK=On -DENABLE_GR_FFT=On -DENABLE_GR_FILTER=On -DENABLE_GR_QTGUI=On -DENABLE_GRC=On -DENABLE_GR_BLOCKS=On -DENABLE_GR_UHD=On -DENABLE_PYTHON=On -DQWT_INCLUDE_DIRS=${qt_dir}/lib/qwt.framework/Versions/Current/Headers -DQWT_LIBRARIES=${qt_dir}/lib/qwt.framework/Versions/Current/qwt ../
make
make test
sudo make install
Tail of output to cmake:
-- ######################################################
-- # Gnuradio enabled components
-- ######################################################
-- * python-support
-- * volk
-- * gnuradio-runtime
-- * gnuradio-companion
-- * gr-blocks
-- * gr-fft
-- * gr-filter
-- * gr-qtgui
--
-- ######################################################
-- # Gnuradio disabled components
-- ######################################################
-- * testing-support
-- * doxygen
-- * sphinx
-- * gr-ctrlport
-- * gr-fec
-- * gr-analog
-- * gr-digital
-- * gr-dtv
-- * gr-audio
-- * gr-comedi
-- * gr-channels
-- * gr-trellis
-- * gr-uhd
-- * gr-utils
-- * gr-video-sdl
-- * gr-vocoder
-- * gr-wavelet
-- * gr-zeromq
--
-- Using install prefix: /usr/local
-- Building for version: 3.8tech-preview-362-g72aa97da / 3.8git
-- Configuring done
CMake Warning (dev):
Policy CMP0068 is not set: RPATH settings on macOS do not affect
install_name. Run "cmake --help-policy CMP0068" for policy details. Use
the cmake_policy command to set the policy and suppress this warning.
For compatibility with older versions of CMake, the install_name fields for
the following targets are still affected by RPATH settings:
gnuradio-blocks
gnuradio-fft
gnuradio-filter
gnuradio-pmt
gnuradio-qtgui
gnuradio-runtime
volk
This warning is for project developers. Use -Wno-dev to suppress it.
-- Generating done
-- Build files have been written to: /usr/local/src/gnuradio/build
Errors from make:
✔ /usr/local/src/gnuradio/build [master|✔]
$ make
/usr/local/src/gnuradio/build/volk/lib/volk_16ic_magnitude_16i_a_orc_impl.c:374:16: warning: comparison of integers of different signs: 'int' and 'unsigned int' [-Wsign-compare]
if (tmp == 0x80000000 && !(var52.i&0x80000000)) tmp = 0x7fffffff;
~~~ ^ ~~~~~~~~~~
1 warning generated.
...
/usr/local/src/gnuradio/build/volk/lib/volk_32fc_s32f_magnitude_16i_a_orc_impl.c:352:16: warning: comparison of integers of different signs: 'int' and 'unsigned int' [-Wsign-compare]
if (tmp == 0x80000000 && !(var50.i&0x80000000)) tmp = 0x7fffffff;
~~~ ^ ~~~~~~~~~~
1 warning generated.
...
In file included from /usr/local/src/gnuradio/build/volk/lib/volk_machine_avx_64_mmx_orc.c:142:
/usr/local/src/gnuradio/volk/kernels/volk/volk_32fc_x2_conjugate_dot_prod_32fc.h:131:38: warning: comparison of integers of different signs: 'int' and 'unsigned int' [-Wsign-compare]
for (point=quarter_points*4; point < num_points; ++point) {
~~~~~ ^ ~~~~~~~~~~
In file included from /usr/local/src/gnuradio/build/volk/lib/volk_machine_avx_64_mmx_orc.c:147:
/usr/local/src/gnuradio/volk/kernels/volk/volk_32fc_x2_s32f_square_dist_scalar_mult_32f.h:203:12: warning: comparison of integers of different signs: 'int' and 'unsigned int' [-Wsign-compare]
for (; i < avx_work_size; i += work_size) {
~ ^ ~~~~~~~~~~~~~
/usr/local/src/gnuradio/volk/kernels/volk/volk_32fc_x2_s32f_square_dist_scalar_mult_32f.h:239:12: warning: comparison of integers of different signs: 'int' and 'unsigned int' [-Wsign-compare]
for (; i < num_points; ++i) {
~ ^ ~~~~~~~~~~
3 warnings generated.
...
/usr/local/src/gnuradio/gnuradio-runtime/lib/local_sighandler.cc:58:7: warning: '~local_sighandler' has a non-throwing exception specification but can still throw [-Wexceptions]
throw std::runtime_error("sigaction");
^
/usr/local/src/gnuradio/gnuradio-runtime/lib/local_sighandler.cc:53:21: note: destructor has a implicit non-throwing exception specification
local_sighandler::~local_sighandler()
^
1 warning generated.
...
In file included from /usr/local/src/gnuradio/gnuradio-runtime/lib/messages/msg_accepter_msgq.cc:26:
/usr/local/src/gnuradio/gnuradio-runtime/lib/../include/gnuradio/messages/msg_accepter_msgq.h:45:20: warning: 'gr::messages::msg_accepter_msgq::post' hides overloaded virtual function [-Woverloaded-virtual]
virtual void post(pmt::pmt_t msg);
^
/usr/local/src/gnuradio/gnuradio-runtime/lib/../include/gnuradio/messages/msg_accepter.h:48:20: note: hidden overloaded virtual function 'gr::messages::msg_accepter::post' declared here: different number of parameters (2 vs 1)
virtual void post(pmt::pmt_t which_port, pmt::pmt_t msg) = 0;
^
1 warning generated.
...
In file included from /usr/local/src/gnuradio/gr-qtgui/lib/TimeRasterDisplayPlot.cc:26:
In file included from /usr/local/src/gnuradio/gr-qtgui/lib/../include/gnuradio/qtgui/TimeRasterDisplayPlot.h:32:
/usr/local/src/gnuradio/gr-qtgui/lib/../include/gnuradio/qtgui/plot_raster.h:72:18: warning: 'PlotTimeRaster::draw' hides overloaded virtual function
[-Woverloaded-virtual]
virtual void draw(QPainter *p,
^
/usr/local/Cellar/qwt/6.1.3_4/lib/qwt.framework/Versions/Current/Headers/qwt_plot_rasteritem.h:101:18: note: hidden overloaded virtual function
'QwtPlotRasterItem::draw' declared here: type mismatch at 4th parameter ('const QRectF &' vs 'const QRect &')
virtual void draw( QPainter *p,
^
1 warning generated.
...
In file included from /usr/local/src/gnuradio/gr-qtgui/lib/timerasterdisplayform.cc:23:
In file included from /usr/local/src/gnuradio/gr-qtgui/lib/../include/gnuradio/qtgui/timerasterdisplayform.h:27:
In file included from /usr/local/src/gnuradio/gr-qtgui/lib/../include/gnuradio/qtgui/TimeRasterDisplayPlot.h:32:
/usr/local/src/gnuradio/gr-qtgui/lib/../include/gnuradio/qtgui/plot_raster.h:72:18: warning: 'PlotTimeRaster::draw' hides overloaded virtual function
[-Woverloaded-virtual]
virtual void draw(QPainter *p,
^
/usr/local/Cellar/qwt/6.1.3_4/lib/qwt.framework/Versions/Current/Headers/qwt_plot_rasteritem.h:101:18: note: hidden overloaded virtual function
'QwtPlotRasterItem::draw' declared here: type mismatch at 4th parameter ('const QRectF &' vs 'const QRect &')
virtual void draw( QPainter *p,
^
1 warning generated.
In file included from /usr/local/src/gnuradio/gr-qtgui/lib/plot_waterfall.cc:23:
/usr/local/src/gnuradio/gr-qtgui/lib/../include/gnuradio/qtgui/plot_waterfall.h:68:18: warning: 'PlotWaterfall::draw' hides overloaded virtual function
[-Woverloaded-virtual]
virtual void draw(QPainter *p,
^
/usr/local/Cellar/qwt/6.1.3_4/lib/qwt.framework/Versions/Current/Headers/qwt_plot_rasteritem.h:101:18: note: hidden overloaded virtual function
'QwtPlotRasterItem::draw' declared here: type mismatch at 4th parameter ('const QRectF &' vs 'const QRect &')
virtual void draw( QPainter *p,
^
/usr/local/src/gnuradio/gr-qtgui/lib/plot_waterfall.cc:261:16: warning: local variable 'image' will be copied despite being returned by name
[-Wreturn-std-move]
return image;
^~~~~
/usr/local/src/gnuradio/gr-qtgui/lib/plot_waterfall.cc:261:16: note: call 'std::move' explicitly to avoid copying
return image;
^~~~~
std::move(image)
/usr/local/src/gnuradio/gr-qtgui/lib/plot_waterfall.cc:311:12: warning: local variable 'image' will be copied despite being returned by name
[-Wreturn-std-move]
return image;
^~~~~
/usr/local/src/gnuradio/gr-qtgui/lib/plot_waterfall.cc:311:12: note: call 'std::move' explicitly to avoid copying
return image;
^~~~~
std::move(image)
3 warnings generated.
[ 88%] Building CXX object gr-qtgui/lib/CMakeFiles/gnuradio-qtgui.dir/plot_raster.cc.o
In file included from /usr/local/src/gnuradio/gr-qtgui/lib/plot_raster.cc:23:
/usr/local/src/gnuradio/gr-qtgui/lib/../include/gnuradio/qtgui/plot_raster.h:72:18: warning: 'PlotTimeRaster::draw' hides overloaded virtual function
[-Woverloaded-virtual]
virtual void draw(QPainter *p,
^
/usr/local/Cellar/qwt/6.1.3_4/lib/qwt.framework/Versions/Current/Headers/qwt_plot_rasteritem.h:101:18: note: hidden overloaded virtual function
'QwtPlotRasterItem::draw' declared here: type mismatch at 4th parameter ('const QRectF &' vs 'const QRect &')
virtual void draw( QPainter *p,
^
/usr/local/src/gnuradio/gr-qtgui/lib/plot_raster.cc:269:12: warning: local variable 'image' will be copied despite being returned by name [-Wreturn-std-move]
return image;
^~~~~
/usr/local/src/gnuradio/gr-qtgui/lib/plot_raster.cc:269:12: note: call 'std::move' explicitly to avoid copying
return image;
^~~~~
std::move(image)
/usr/local/src/gnuradio/gr-qtgui/lib/plot_raster.cc:314:10: warning: local variable 'image' will be copied despite being returned by name [-Wreturn-std-move]
return image;
^~~~~
/usr/local/src/gnuradio/gr-qtgui/lib/plot_raster.cc:314:10: note: call 'std::move' explicitly to avoid copying
return image;
^~~~~
std::move(image)
3 warnings generated.
...
In file included from /usr/local/src/gnuradio/gr-qtgui/lib/time_sink_c_impl.cc:27:
/usr/local/src/gnuradio/gr-qtgui/lib/time_sink_c_impl.h:68:11: warning: private field 'd_initial_delay' is not used [-Wunused-private-field]
int d_initial_delay; // used for limiting d_trigger_delay
^
1 warning generated.
[ 89%] Building CXX object gr-qtgui/lib/CMakeFiles/gnuradio-qtgui.dir/time_sink_f_impl.cc.o
In file included from /usr/local/src/gnuradio/gr-qtgui/lib/time_sink_f_impl.cc:27:
/usr/local/src/gnuradio/gr-qtgui/lib/time_sink_f_impl.h:66:11: warning: private field 'd_initial_delay' is not used [-Wunused-private-field]
int d_initial_delay; // used for limiting d_trigger_delay
^
1 warning generated.
[ 89%] Building CXX object gr-qtgui/lib/CMakeFiles/gnuradio-qtgui.dir/time_raster_sink_b_impl.cc.o
In file included from /usr/local/src/gnuradio/gr-qtgui/lib/time_raster_sink_b_impl.cc:27:
In file included from /usr/local/src/gnuradio/gr-qtgui/lib/time_raster_sink_b_impl.h:31:
In file included from /usr/local/src/gnuradio/gr-qtgui/lib/../include/gnuradio/qtgui/timerasterdisplayform.h:27:
In file included from /usr/local/src/gnuradio/gr-qtgui/lib/../include/gnuradio/qtgui/TimeRasterDisplayPlot.h:32:
/usr/local/src/gnuradio/gr-qtgui/lib/../include/gnuradio/qtgui/plot_raster.h:72:18: warning: 'PlotTimeRaster::draw' hides overloaded virtual function
[-Woverloaded-virtual]
virtual void draw(QPainter *p,
^
/usr/local/Cellar/qwt/6.1.3_4/lib/qwt.framework/Versions/Current/Headers/qwt_plot_rasteritem.h:101:18: note: hidden overloaded virtual function
'QwtPlotRasterItem::draw' declared here: type mismatch at 4th parameter ('const QRectF &' vs 'const QRect &')
virtual void draw( QPainter *p,
^
1 warning generated.
[ 89%] Building CXX object gr-qtgui/lib/CMakeFiles/gnuradio-qtgui.dir/time_raster_sink_f_impl.cc.o
In file included from /usr/local/src/gnuradio/gr-qtgui/lib/time_raster_sink_f_impl.cc:27:
In file included from /usr/local/src/gnuradio/gr-qtgui/lib/time_raster_sink_f_impl.h:31:
In file included from /usr/local/src/gnuradio/gr-qtgui/lib/../include/gnuradio/qtgui/timerasterdisplayform.h:27:
In file included from /usr/local/src/gnuradio/gr-qtgui/lib/../include/gnuradio/qtgui/TimeRasterDisplayPlot.h:32:
/usr/local/src/gnuradio/gr-qtgui/lib/../include/gnuradio/qtgui/plot_raster.h:72:18: warning: 'PlotTimeRaster::draw' hides overloaded virtual function
[-Woverloaded-virtual]
virtual void draw(QPainter *p,
^
/usr/local/Cellar/qwt/6.1.3_4/lib/qwt.framework/Versions/Current/Headers/qwt_plot_rasteritem.h:101:18: note: hidden overloaded virtual function
'QwtPlotRasterItem::draw' declared here: type mismatch at 4th parameter ('const QRectF &' vs 'const QRect &')
virtual void draw( QPainter *p,
^
1 warning generated.
...
[ 91%] Building CXX object gr-qtgui/lib/CMakeFiles/gnuradio-qtgui.dir/edit_box_msg_impl.cc.o
/usr/local/src/gnuradio/gr-qtgui/lib/edit_box_msg_impl.cc:524:22: warning: unused variable 'c' [-Wunused-variable]
gr_complex c;
^
1 warning generated.
...
In file included from /usr/local/src/gnuradio/build/gr-qtgui/lib/__/include/gnuradio/qtgui/moc_timerasterdisplayform.cpp:9:
In file included from /usr/local/src/gnuradio/build/gr-qtgui/lib/__/include/gnuradio/qtgui/../../../../../../../gr-qtgui/include/gnuradio/qtgui/timerasterdisplayform.h:27:
In file included from /usr/local/src/gnuradio/gr-qtgui/lib/../include/gnuradio/qtgui/TimeRasterDisplayPlot.h:32:
/usr/local/src/gnuradio/gr-qtgui/lib/../include/gnuradio/qtgui/plot_raster.h:72:18: warning: 'PlotTimeRaster::draw' hides overloaded virtual function
[-Woverloaded-virtual]
virtual void draw(QPainter *p,
^
/usr/local/Cellar/qwt/6.1.3_4/lib/qwt.framework/Versions/Current/Headers/qwt_plot_rasteritem.h:101:18: note: hidden overloaded virtual function
'QwtPlotRasterItem::draw' declared here: type mismatch at 4th parameter ('const QRectF &' vs 'const QRect &')
virtual void draw( QPainter *p,
^
1 warning generated.
...
In file included from /usr/local/src/gnuradio/build/gr-qtgui/lib/__/include/gnuradio/qtgui/moc_form_menus.cpp:9:
/usr/local/src/gnuradio/build/gr-qtgui/lib/__/include/gnuradio/qtgui/../../../../../../../gr-qtgui/include/gnuradio/qtgui/form_menus.h:744:16: warning:
private field 'd_other' is not used [-Wunused-private-field]
OtherAction *d_other;
^
/usr/local/src/gnuradio/build/gr-qtgui/lib/__/include/gnuradio/qtgui/../../../../../../../gr-qtgui/include/gnuradio/qtgui/form_menus.h:862:16: warning:
private field 'd_other' is not used [-Wunused-private-field]
OtherAction *d_other;
^
/usr/local/src/gnuradio/build/gr-qtgui/lib/__/include/gnuradio/qtgui/../../../../../../../gr-qtgui/include/gnuradio/qtgui/form_menus.h:970:7: warning:
private field 'd_which' is not used [-Wunused-private-field]
int d_which;
^
/usr/local/src/gnuradio/build/gr-qtgui/lib/__/include/gnuradio/qtgui/../../../../../../../gr-qtgui/include/gnuradio/qtgui/form_menus.h:1121:20: warning:
private field 'd_other' is not used [-Wunused-private-field]
OtherDualAction *d_other;
^
4 warnings generated.
...
In file included from /usr/local/src/gnuradio/build/gr-qtgui/lib/__/include/gnuradio/qtgui/moc_TimeRasterDisplayPlot.cpp:9:
In file included from /usr/local/src/gnuradio/build/gr-qtgui/lib/__/include/gnuradio/qtgui/../../../../../../../gr-qtgui/include/gnuradio/qtgui/TimeRasterDisplayPlot.h:32:
/usr/local/src/gnuradio/gr-qtgui/lib/../include/gnuradio/qtgui/plot_raster.h:72:18: warning: 'PlotTimeRaster::draw' hides overloaded virtual function
[-Woverloaded-virtual]
virtual void draw(QPainter *p,
^
/usr/local/Cellar/qwt/6.1.3_4/lib/qwt.framework/Versions/Current/Headers/qwt_plot_rasteritem.h:101:18: note: hidden overloaded virtual function
'QwtPlotRasterItem::draw' declared here: type mismatch at 4th parameter ('const QRectF &' vs 'const QRect &')
virtual void draw( QPainter *p,
^
1 warning generated.
...
ld: library not found for -lgnuradio-analog
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [gr-qtgui/examples/c++/display_qt] Error 1
make[1]: *** [gr-qtgui/examples/c++/C
2 thoughts:
When you do
make
, usemake VERBOSE=ON
to get the actual issued commands for compiling, linking etc. Actual commands help debugging a lot!The error shows that you need to enable
gr-analog
in thecmake
command. Do that & try again. If it gives you a similar linking error then enable that component & try again; rinse, lather, repeat, LOL!