提示:安装uhd+gnuradio实际上并不难,只是实际安装的时候,作为新手经常会因为缺乏相关知识而踩不少坑,以下是我踩坑安装的一些记录。
gnuradio+uhd安装过程

win10下ubuntu双系统
使用usrpb210
ubuntu18.04

安装方法有两种,一种是使用已经编译好的二进制码,缺点是版本通常比较旧,但学习usrp也不需要太新的版本,另外,这种安装方法比较简单,会帮我们解决好依赖关系,基本不会出问题,安装速度也快;另一种自己编译源码进行安装,这种方法make时间会比较长,也容易出问题,特别是环境变量问题,如果了解ubuntu下的环境变量是如何配置和工作的,问题就不大。

使用二进制码安装:
https://files.ettus.com/manual/page_install.html

注:
使用二进制源码进行安装时,也就是使用apt-get命令进行安装,首先要知道ubuntu18.04的官方库中已经包含了uhd和gnuradio的软件包。运行apt show libuhd-dev libuhd003 uhd-host,可以知道,里面包含了uhd版本为3.10.3.0-2,但是会显示无法定位 libuhd003。我们可以继续运行apt show libuhd003*,可以发现ubuntu18.04库里的libuhd为libuhd003.010.003,至于为什么按官方给的命令会查不到软件包,可能是没有及时更新吧,所以要用查到的libuhd003.010.003来代替 libuhd003
另外,官方的安装指南也提到,如果想安装较新版本的软件包,可以安装依赖源,如:sudo add-apt-repository ppa:ettusresearch/uhd,但是当我安装好依赖源,再运行sudo apt-get install libuhd-dev libuhd003 uhd-host安装uhd时,后面安装好gnuradio运行有关usrp的程序时,会提示uhd错误,经过网上搜索得知,这时候发生了版本冲突,也就是安装了两个uhd版本,一个是ubuntu18.04库里的旧版本(libuhd003.010.003),一个是依赖源提供的新版本,至于为什么会安装了两个uhd,我也不是很清楚,但是可以通过不安装依赖源(sudo add-apt-repository ppa:ettusresearch/uhd),直接sudo apt-get install libuhd-dev libuhd003.010.003 uhd-host进行安装,这样后面不会出现两个版本的uhd问题。缺点就是uhd版本较旧,但用起来没什么问题。

安装:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install libuhd-dev libuhd003.010.003 uhd-host

这样就装好了uhd.

接下来安装gnuradio:
https://wiki.gnuradio.org/index.php/InstallingGR

注:
同样可以直接安装库自带的版本(我这里是3.7),也可以通过安装依赖源(sudo add-apt-repository ppa:gnuradio/gnuradio-releases),来安装较新版本的gnuradio,还需要注意的是,gnuradio3.8及以上的版本已经去除了wxgui,说法是qtgui更好,但考虑到网上的一些旧程序使用wxgui,自己改成qtqui会有些小麻烦,干脆就装3.7版本就好了。

安装gnuradio:
sudo apt install gnuradio

这样就安装好了gnuradio.

我们可以运行uhd_find_device或者uhd_usrp_probe试试
会显示uhd版本,以及No UHD Devices Found

接下来还有一步需要完成,不然连接usrp是识别不出来的。
这个时候我们还需要运行uhd_images_downloader,如果提示权限问题,就加上sudo,如果还不行,就直接根据提示给的下载链接,直接打开浏览器下载,然后放到它说的目的路径,解压。至于为什么会有这样的问题,可能是开发者提供的程序有些问题吧。需要注意的是,不同uhd版本需要下载的东西会不一样,比如Uhd3.10需要下载的是一个压缩包,下载解压就好,但最新版本的Uhd会给出一推压缩包,可以根据自己的usrp型号下载需要的几个压缩包解压,如果不知道要下载哪几包,也可以全都下载解压,就是会有些麻烦。

以上就是使用二进制软件包进行安装的过程。

接下来是自己编译二进制源码包进行安装。
如果有了解过make编译和环境变量的知识会好一些。

先安装uhd
https://kb.ettus.com/Building_and_Installing_the_USRP_Open-Source_Toolchain_(UHD_and_GNU_Radio)_on_Linux

首先是安装依赖源:
On Ubuntu 18.04 systems, run:
sudo apt-get -y install git swig cmake 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 cmake git wget libxi-dev gtk2-engines-pixbuf r-base-dev python-tk liborc-0.4-0 liborc-0.4-dev libasound2-dev python-gtk2 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

然后创建安装位置:
cd
mkdir workarea
cd workarea
从github下载

git clone https://github.com/EttusResearch/uhd
cd uhd
查看包中的包含的版本
$ git tag -l

release_003_009_004
release_003_009_005
release_003_010_000_000
检出想要的版本(我选的是UHD3.10版本的)

Example: For UHD 3.9.5:

git checkout release_003_009_005
或者

Example: For UHD 3.14.0.0

git checkout v3.14.0.0
安装(依次输入以下命令)
cd host
mkdir build
cd build
cmake …/
make
make test
(注:make完以后可以make test试试,如果全部测试通过,就没什么问题,如果有几个测试不通过的,按官方给的说法是,这很可能是测试需要的工具没安装完整,但对安装uhd没什么影响)
sudo make install
sudo ldconfig
(注:安装完后需要更新系统的共享库缓存)

接下来配置环境变量

上面给的链接中(2016年的文档)官方说,打开$HOME/.bashrc,也就是在主目录下打开.bashrc文件,然后写入,export LD_LIBRARY_PATH=/usr/local/lib,保存关闭。但是我做了以后,
运行echo $ LD_LIBRARY_PATH,发现该环境变量没有值,也就是环境变量没有添加成功。
需要说明的是,所谓环境变量,如 LD_LIBRARY_PATH,这是它的变量名,我们想给他赋值为/usr/local/lib,这样,当程序中出现 LD_LIBRARY_PATH,系统会把它识别为/usr/local/lib,如果识别不成功,那么程序就会报错。
而.bashrc这样的bash文件就和环境变量的配置有关。系统需要运行这种文件来读取环境变量的值。需要注意的是,这样的文件不止一个,针对不同的用户、不同模式会读取不同的文件,比如主目录下的.bashrc文件是属于个人bash文件,我们自己安装的程序,可以把环境变量写进去,按理说应该可以正常工作才对,但这里我写进去的环境变量读取不出来,应该是哪里出了点问题我没发现。
但是我们可以将环境变量写入其它bashrc文件,运行,locate .bashrc(需要注意的是,新加入的文件locate可能找不出来,这时需要运行sudo updatedb,更新一下locate搜索依赖的东西,这个好像是默认开机还是一天自动更新一次),我找到了/etc/bash.bashrc,这个bash.bashrc文件也是跟环境变量有关的,是供所有用户使用的一个,打开该文件,在文件末尾写入 export LD_LIBRARY_PATH=/usr/local/lib,保存关闭,
运行echo $ LD_LIBRARY_PATH,看有没有显示出相应的值。
官方还提示,如果 LD_LIBRARY_PATH已经赋了其它值,那写的时候就换成export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib,也就是一个变量名可以并列赋多个值,用冒号隔开就行。

接下来需要Downloading the UHD FPGA Images
运行sudo uhd_images_downloader
这里可能会遇到的问题,在前面使用二进制码安装时已经说过了。

接下来安装uhd
https://wiki.gnuradio.org/index.php/InstallingGR#From_Source
这里是根据链接中针对ubuntu 18.04那个教程来的
For Ubuntu 18.04[edit]
An easy way to install GNU Radio 3.8 on many Ubuntu systems is to use the following commands (note that this skips the setup for UHD hardware):
首先,安装一些依赖和一些工具
sudo apt install git cmake g++ libboost-all-dev libgmp-dev swig python3-numpy python3-mako python3-sphinx python3-lxml doxygen libfftw3-dev libsdl1.2-dev libgsl-dev libqwt-qt5-dev libqt5opengl5-dev python3-pyqt5 liblog4cpp5-dev libzmq3-dev python3-yaml python3-click python3-click-plugins python3-zmq python3-scipy python3-pip python3-gi-cairo

pip3 install git+https://github.com/pyqtgraph/pyqtgraph@develop
pip3 install numpy scipy

然后写环境变量

 echo 'export PYTHONPATH=/usr/local/lib/python3/dist-packages:usr/local/lib/python2.7/site-packages:$PYTHONPATH' >> ~/.bashrcecho 'export LD_LIBRARY_PATH=/user/local/lib:$LD_LIBRARY_PATH' >> ~/.bashrcecho 'export PYTHONPATH=/usr/local/lib/python3/dist-packages:usr/local/lib/python2.7/site-packages:$PYTHONPATH' >> ~/.profileecho 'export LD_LIBRARY_PATH=/user/local/lib:$LD_LIBRARY_PATH' >> ~/.profile

(注:这是环境变量也另一种写法,直接写到文件中,运行完后,可以echo $变量名看值对不对,不对的话,按前面说的方法,写入bash.bashrc,自己试试就知道了。也可以不用官方这种写法,改成

echo 'export PYTHONPATH=/usr/local/lib/python3/dist-packages:usr/local/lib/python2.7/site-packages:$PYTHONPATH' >> /etc/bash.bashrc
echo 'export LD_LIBRARY_PATH=/user/local/lib:$LD_LIBRARY_PATH' >> /etc/bash.bashrc

或者打开相应文件编辑)

然后下载准备安装

cd ~/
git clone --recursive https://github.com/gnuradio/gnuradio
cd gnuradio
git checkout maint-3.8
mkdir build
cd build
git pull --recurse-submodules=on
git submodule update --init

(注:gnuradio3.8版本移除了wxgui,想要的话可以选maint-3.7)
接下来的一步,官方给的是cmake -DENABLE_GR_UHD=OFF …
但这里我们不能这么写,这句话是关闭了GR_UHD的使能,如果你真的这么运行了,那么你会发现安装好的GNURADIO,打开后发现找不到UHD模块,原因就在这里。至于官方为什么这么写,因为这里是gnuradio官方写的安装gnuradio的方法,它认为你前面没有安装UHD,所以就不使能GR_UHD模块了。这里我们直接写cmake ../
这样cmake的参数就是默认的,同样默认使能了GR_UHD模块
然后make安装

make -j $(nproc --all)
sudo make install
sudo ldconfig

到这里,自行编译安装uhd+gnuradio就完成了。
插上usrpb210,运行uhd_device_find,应该就可以读取到设备的信息。如果提示你权限问题,那就加上sudo,但为了方便,我们可以根据这篇文章来解决
解决usb权限问题
https://files.ettus.com/manual/page_transport.html#transport_usb_udev

依次运行
(注:这里的要替换一下,从前面设置的环境变量LD_LIBRARY_PATH=/user/local/lib,可知需要把替换成/user/local)

cd <install-path>/lib/uhd/utils
sudo cp uhd-usrp.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules
sudo udevadm trigger

就好了,这样运行uhd_device_find,就不用每次加sudo了

最后,我们可以运行gnuradio提供的example下的uhd_fft.grc,如果可以正常运行,说明安装没什么问题了。

ubuntu下安装uhd+gnuradio相关推荐

  1. Ubuntu 16.04 源码编译安装 uhd gnuradio

    Ubuntu 16.04 源码编译安装 uhd & gnuradio 环境介绍 UHD安装 1 安装依赖 2 编译 3 测试安装结果 4 配置 USB gnuradio安装 1 安装依赖 2 ...

  2. Ubuntu 下安装thttpd Web服务器

    不知道大家是不是真的需要用appache这么复杂的功能这么强大的web server,其实有很多时候使用webserver也只是一种远程共享访问的方式.这里,Ubuntu repository的提供了 ...

  3. Ubuntu下安装Apache+PHP+Mysql

    Ubuntu下安装 apache+php+mysql文本服务器! ------------------------------------------------------------------- ...

  4. ubuntu下安装ftp服务器

    ubuntu下安装ftp服务器 Ftp服务器是使用以vsftp为例. 1. 安装     $sudo aptitude install vsftpd     $ps aux | grep 'ftp' ...

  5. linux pureftp mysql_在Ubuntu下安装apache2+php5+mysql5+pureftp+ftp

    在Ubuntu下安装apache2+php5+mysql5+pureftp+ftp 一.安装Ubuntu7.04 Desktop版 二.ubuntu Linux下手工安装mysql5 1.下载mysq ...

  6. ubuntu下安装windows虚拟机

    ubuntu下安装win7虚拟机总结 ubuntu16.04 虚拟机 安装win7/win10 http://WIN10:你不能访问此共享文件夹,解决方法 VirtualBox虚拟机剪贴板共享

  7. Linux :debian(ubuntu)下安装和使用haskell

    文章目录 Linux :debian(ubuntu)下安装haskell 安装 使用 Linux :debian(ubuntu)下安装haskell 安装 直接使用apt进行安装: sudo apt- ...

  8. Linux: debian/ubuntu下安装和使用Java 11

    Linux: debian/ubuntu下安装和使用Java 11 只需6行命令: su - echo "deb http://ppa.launchpad.net/linuxuprising ...

  9. Linux: debian/ubuntu下安装和使用Java 8

    Linux: debian/ubuntu下安装和使用Java 8 7行命令解决问题: su - echo "deb http://ppa.launchpad.net/webupd8team/ ...

最新文章

  1. VS调试时提示此项目已经过期
  2. 将类别加入到别人的名称空间内
  3. Linux Linux程序练习十一(网络编程大文件发送UDP版)
  4. python  字典 元组 集合 列表 字符串 字节数组 常用的方法总结
  5. smarty安装与配置
  6. java怎么编写软键盘_安卓手机软键盘操作
  7. Nginx笔记-Nginx中进程结构及使用Linux信号量管理
  8. 在代码中使用协程(一)
  9. Python菜鸟入门:day12编程学习
  10. CocoaLumberjack
  11. python列表的嵌套_Python 展开多层嵌套的列表
  12. 485芯片方向切换的几种方式及原理
  13. java学习技术栈总结
  14. 密码显示隐藏符号格式会变
  15. CEMAPI实战攻略(二)——建立与短信信箱的连接
  16. AD20和立创EDA设计(4)PCB设计
  17. LVS的模式一:DR(直接路由)模式
  18. svn提交代码到远程服务器
  19. 学习 FPGA 经验与书籍分享。
  20. 业界前沿技术:从零开始学视觉Transformer-Data-Efficient Image Transformers

热门文章

  1. java邮箱_JavaMail
  2. 内存、外存、主存、高速缓存有什么关系,到底是什么?
  3. 帮我写一个风光互补发电系统功率优化分配程序
  4. 如何以程序的方式加载adobe reader阅读器
  5. 行车数据上链,国产汽车很上道
  6. window-server服务器监控自动化(cpu、mem、disk)-->钉钉报警
  7. python五子棋_python 五子棋源码
  8. ADS 如何切换不同PDK之间的版图?
  9. 雅虎笔试题整理+自己写的答案
  10. GuLi商城-人人开源搭建前端项目