我使用的ubuntu18.04,在VMware系统上,针对python2.7进行的安装,gnuradio的版本是3.7.14.0。
首先参考官网给出的安装依赖[1] (链接里是gr3.9的依赖,gr3.7仅支持python2.7,不过大体相同),将每一个block的依赖都安装好,我这里坚持能用apt安装的尽量apt,实在不行再编译。
我这里总结了一下需要安装依赖:
sudo apt install -y gcc g++ cmake texlive-latex-extra libboost-all-dev libcanberra-gtk-module libcanberra-gtk3-module libgsl-dev swig doxygen build-essential libboost-all-dev libtool libusb-1.0-0 libusb-1.0-0-dev libudev-dev libncurses5-dev libfftw3-bin libfftw3-dev libfftw3-doc libcppunit-1.14-0 libcppunit-dev libcppunit-doc ncurses-bin cpufrequtils python-numpy python-numpy-doc python-numpy-dbg python-scipy python-docutils qt4-bin-dbg qt4-default qt4-doc libqt4-dev libqt4-dev-bin python-qt4 python-qt4-dbg python-qt4-dev python-qt4-doc python-qt4-doc libqwt6abi1 libfftw3-bin libfftw3-dev libfftw3-doc ncurses-bin libncurses5 libncurses5-dev libncurses5-dbg libfontconfig1-dev libxrender-dev libpulse-dev swig g++ automake autoconf libtool python-dev libfftw3-dev libcppunit-dev libboost-all-dev libusb-dev libusb-1.0-0-dev fort77 libsdl1.2-dev python-wxgtk3.0 git libqt4-dev python-numpy ccache python-opengl libgsl-dev python-cheetah python-mako python-lxml doxygen qt4-default qt4-dev-tools libusb-1.0-0-dev libqwtplot3d-qt5-dev pyqt4-dev-tools python-qwt5-qt4 wget libxi-dev gtk2-engines-pixbuf r-base-dev python-tk liborc-0.4-0 liborc-0.4-dev libasound2-dev python-gtk2 python-gtk2-dev libzmq3-dev libzmq5 python-requests python-sphinx libcomedi-dev python-zmq libqwt-dev libqwt6abi1 python-six libgps-dev libgps23 gpsd gpsd-clients python-gps python-setuptools libjs-mathjax fftw3-dev pkg-config libzmq-dev
如果安装有一些问题,建议使用 sudo apt update 先更新一下,再次执行上面的命令,重复多次,直到装好。
python2.7 中也需要安装一些依赖
pip install Mako numpy
接下来安装一些必须编译的依赖
首先是liberio, 大家在Github上下载liberio,然后,进入目录用如下命令编译
autoreconf -i
./configure --prefix=/usr
sudo make && sudo make install
接下来是很重要的UHD,我尝试直接使用apt install uhd-host,结果在编译gnuradio的时候还是找不到uhd,所以用源码编译。
首先下载uhd3.15.0的源文件,进入uhd/host目录
mkdir build
cd build
cmake …/ -DCMAKE_INSTALL_PREFIX=/usr
sudo make -j4
sudo make test
sudo make install
然后是log4cpp1.1.x,下载log4cpp的源文件,解压进入目录
./configure
make
make check
make install
最后是环境变量,需要将刚才安装的库添加到环境变量,我的配置如下,根据自己系统的安装情况自行修改
PATH="/usr.lib:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"
PYTHONPATH="/usr/lib/python2.7/dist-packages"
PYTHON_INCLUDE_DIR="/usr/include/python2.7"
PYTHON_LIBRARY="/usr/lib/x86_64-linux-gnu/libpython2.7.so"
最后下载gnuradio3.7的源码, 注意其中的volk 是一个submodule,直接下载zip没有其中的内容,建议点击volk @ 17277ed 跳转后手动下载volk将其中的文件复制到gnuradio的volk目录下。
准备完成进入gnuradio目录可是编译
mkdir build
cd build
接下来每一步都比较耗时,尤其是make
Cmake (DPYTHON_EXECUTABLE DPYTHON_INCLUDE_DIR DPYTHON_LIBRARY 这几个变量需要加一下,不然之后make test会有问题)
cmake -DPYTHON_EXECUTABLE=/usr/bin/python2.7 -DPYTHON_INCLUDE_DIR=/usr/include/python2.7 -DPYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython2.7.so …/
然后可以make
sudo make -j4
测试 make test
sudo make test
结果发现如下错误
- qa_skiphead (Failed)
- qa_tag_share (Failed)
参照这个isuue[2]中的解决方案修改源文件,应该与语法有关, 需要在gr-blocks/python/blocks/qa_skiphead.py和gr-blocks/python/blocks/qa_tag_share.py进行修改(结尾有文件链接)。
修改完之后,需要把build文件直接删除,防止cmake的缓存的影响。然后,重新按照上边的命令cmake->make->make test,我通过这样修改测试全部通过。
然后进行安装
sudo make install
最后运行gnuradio测试一下
sudo gnuradio-companion
我运行时出现了一些问题:Gtk-Message: Failed to load module “canberra-gtk-module”,在安装sudo apt install libcanberra-gtk-module libcanberra-gtk3-module之后,运行成功,这两个库我已经放在了开头的安装依赖的命令里。
这是我已经编译过的文件,且进行了试安装:gnuradio-maint-3.7.tar.gz、uhd-3.15.0.0.tar.gz、log4cpp.tar.gz、liberio.tar.gz (由于博客的文件大小限制,这是云盘链接所有文件压缩 (提取码: js7c),也上传到了CSDN)。
参考文献:
InstallGR. Gnuradio Wiki. https://www.gnuradio.org/doc/doxygen/build_guide.html ↩︎
Gnuradio issues https://github.com/gnuradio/gnuradio/issues/2995 ↩︎