admin 管理员组文章数量: 887042
2024年2月20日发(作者:免费的音效素材网)
安装GNU Radio
安装GNU Radio的典型方法有两种:
(1) 通过build-gnuradio脚本安装最新版;
(2) 自己下载相应版本的.2文件,自行编译安装。
上述的方法均来源于:/redmine/projects/gnuradio/wiki/InstallingGR
可按其提示的步骤执行。下面分别予以介绍。
(1) 通过build-gnuradio脚本安装最新版
该脚本适用于Ubuntu和Fedora系统,一般情况下可一次性地完成GNU Radio和UHD的安装,并顺利通过测试。该方法适于基础较少的用户,安装过程简单方便,但是不利于我们深入地了解安装过程,因而即便安装成功,在今后如果出现程序运行上问题和错误,也同样需要很长的时间去寻找解决办法。
下面将以Ubuntu10.10系统为例,介绍GNU Radio的安装过程。
a. 下载build-gnuradio安装脚本。
从/files/build-gnuradio处下载脚本文件。(直接链接另存为即可)
b. 将脚本文件拷贝到主文件夹目录下,按照下面的命令依次操作即可。
wwfzs1990@wwfzs1990-laptop:~$ ./build-gnuradio
This script will install Gnu Radio from current GIT sources
You will require Internet access from the computer on which this
script runs. You will also require SUDO access. You will require
approximately 500MB of free disk space to perform the build.
This script will, as a side-effect, remove any existing Gnu Radio
installation that was installed from your Linux distribution packages.
It must do this to prevent problems due to interference between
a linux-distribution-installed Gnu Radio/UHD and one installed from GIT source.
The whole process may take up to two hours to complete, depending on the
capabilities of your system.
Proceed?y (需要输入y后,按回车)
Starting all functions at: 2012年 03月 08日 星期四 07:45:31 CST
SUDO privileges are required
Do you have SUDO privileges?y (需要输入y后,按回车)
Continuing with script
[sudo] password for wwfzs1990:
Checking for package libfontconfig1-dev
Checking for package libxrender-dev
Checking for package libpulse-dev
Checking for package swig
Checking for package g++
Checking for package automake
Checking for package autoconf
Checking for package libtool
Checking for package python-dev
Checking for package libfftw3-dev
Checking for package libcppunit-dev
Checking for package libboost-all-dev
Checking for package libusb-dev
Checking for package libusb-1.0-0-dev
Checking for package fort77
Checking for package sdcc
Checking for package sdcc-libraries
Checking for package libsdl1.2-dev
Checking for package python-wxgtk2.8
Checking for package git-core
Checking for package guile-1.8-dev
Checking for package libqt4-dev
Checking for package python-numpy
Checking for package ccache
Checking for package python-opengl
Checking for package libgsl0-dev
Checking for package python-cheetah
Checking for package python-lxml
Checking for package doxygen
Checking for package qt4-dev-tools
Checking for package libusb-1.0-0-dev
Checking for package libqwt5-qt4-dev
Checking for package libqwtplot3d-qt4-dev
Checking for package pyqt4-dev-tools
Checking for package python-qwt5-qt4
Checking for package cmake
Checking for package git-core
Checking for package wget
Checking for package sdcc
Checking for package python-docutils
Checking for package gtk2-engines-pixbuf
Checking for package python-tk
Checking for library libusb ...Found library libusb
Checking for library libboost_ ...Found library libboost_
Checking for library libcppunit ...Found library libcppunit
Checking for library libguile ...Found library libguile
Checking for library libfftw ...Found library libfftw
Checking for library libgsl ...Found library libgsl
Done
Fetching Gnu Radio Done (根据网速的差异,此处可能要等很久)
Fetching UHD Done (同上)
Starting function uhd_build at: 2012年 03月 08日 星期四 07:50:35 CST
Done building/installing UHD
Done function uhd_build at: 2012年 03月 08日 星期四 08:03:53 CST
Starting function firmware at: 2012年 03月 08日 星期四 08:03:53 CST
Fetching and installing FPGA/Firmware images
...Installing from:
...Copying into /usr/local/share/uhd
Done
Done function firmware at: 2012年 03月 08日 星期四 08:04:04 CST
Starting function gnuradio_build at: 2012年 03月 08日 星期四 08:04:04 CST
/usr/local/lib already in .d
Building
...Doing cmake
...Cmaking (此处make需要很久)
...Building
...Installing
Done building and installing Gnu Radio
GRC freedesktop icons install ...Done
Done function gnuradio_build at: 2012年 03月 08日 星期四 08:28:19 CST
Starting function mod_groups at: 2012年 03月 08日 星期四 08:28:19 CST
Group 'usrp' already in /etc/group
********************************************************************************
This script has just modified /etc/group to place your userid '('$USER')' into group 'usrp'
In order for this change to take effect, you will need to log-out and log back
in again. You will not be able to access your USRP1 device until you do this.
If you wish to allow others on your system to use the USRP1 device, you will need to use:
sudo usermod -a -G usrp userid
For each userid you wish to allow access to the usrp
********************************************************************************
Further
Done function mod_groups at: 2012年 03月 08日 星期四 08:28:19 CST
Starting function mod_udev at: 2012年 03月 08日 星期四 08:28:19 CST
Done function mod_udev at: 2012年 03月 08日 星期四 08:28:19 CST
Starting function mod_sysctl at: 2012年 03月 08日 星期四 08:28:19 CST
Applying updates to /etc/
Group 'usrp' now has real-time scheduling privileges
You will need to log-out and back in again for this to
take effect
Done function mod_sysctl at: 2012年 03月 08日 星期四 08:28:19 CST
Starting function pythonpath at: 2012年 03月 08日 星期四 08:28:19 CST
************************************************************
You should probably set your PYTHONPATH to:
/usr/local/lib/python2.6/dist-packages
in your .bashrc or equivalent file prior to attempting to run
any Gnu Radio applications or Gnu Radio Companion.
*************************************************************
Done function pythonpath at: 2012年 03月 08日 星期四 08:28:19 CST
Done all functions at: 2012年 03月 08日 星期四 08:28:19 CST
All Done
wwfzs1990@wwfzs1990-laptop:~$ sudo gedit .bashrc
将下面两行内容添加到.bashrc文件的最后:
PYTHONPATH=/usr/local/lib/python2.6/dist-packages
export PYTHONPATH
然后保存退出
wwfzs1990@wwfzs1990-laptop:~$ source .bashrc
(2) 自己下载相应版本的.文件,自行编译安装。
该方法虽然操作起来比较麻烦,但只要按照官网Wiki中的步骤一步步操作,也是比较方便的,同时还能加深自己对整个安装过程的理解。
整个流程参考:
/redmine/projects/gnuradio/wiki/BuildGuide
a. 安装依赖(Meet dependencies)
可在链接:
/redmine/projects/gnuradio/wiki/UbuntuInstall#Maverick-1010
处找到GNU Radio在Ubuntu 10.10中所需要的依赖环境,列举如下:
sudo apt-get -y install libfontconfig1-dev libxrender-dev libpulse-dev
swig g++ automake autoconf libtool python-dev libfftw3-dev
libcppunit-dev libboost-all-dev libusb-dev fort77 sdcc sdcc-libraries
libsdl1.2-dev python-wxgtk2.8 git guile-1.8-dev
libqt4-dev python-numpy ccache python-opengl libgsl0-dev
python-cheetah python-lxml doxygen qt4-dev-tools
libqwt5-qt4-dev libqwtplot3d-qt4-dev pyqt4-dev-tools python-qwt5-qt4
b. 下载源代码(Get the source code)
可在链接:
/redmine/projects/gnuradio/files
处找到最近几个版本的GNU Radio的源代码,此处选择了来安装,因为其所包含的例程更多。
下载完之后可将其手动解压到主文件夹中,以便下一步进行安装。
注意
虽然安装完成之后可以删除源代码,但最好能够保留,因为之后的卸载还需要在源代码所处的文件夹内进行。
c. 编译、生成和安装(Compile、Build&Install)
打开终端,进入主文件夹下的gnuradio-3.4.2目录中,按下面的顺序执行命令:
./configure
make
make check
sudo make install
即可完成安装。
注意
上述过程中可能每一步都会出现问题和错误,需要特别注意的是./configure那一步。
在完成./configure命令之后,会显示configure之后的结果,即哪些组件完成了配置,而哪些组件由于依赖的缺失而未能完成配置。configure之后正常的结果会如下所示:
*********************************************************************
The following GNU Radio components have been successfully configured:
config
gruel
volk
gnuradio-core
usrp
usrp2
gr-usrp
gr-usrp2
gr-msdd6000
gr-audio
gr-atsc
gr-comedi
gr-cvsd-vocoder
gr-gpio
gr-gsm-fr-vocoder
gr-noaa
gr-pager
gr-radar-mono
gr-radio-astronomy
gr-trellis
gr-video-sdl
gr-wxgui
gr-qtgui
gr-sounder
gr-utils
gnuradio-examples
grc
gr-uhd
docs
You my now run the make command to build these components.
*********************************************************************
The following components were skipped either because you asked not
to build them or they didn't pass configuration checks:
gcell
gr-gcell
gr-shd
These components will not be built.
正常情况下只有gcell、gr-gcell、gr-shd三个组件不会被成功生成。关于gcell和gr-gcell的说明,见下述链接:
/topic/201112
但是有时候gr-comedi和gr-uhd组件也有可能配置失败,这说明与这两个组件相关的依赖没有被安装或安装失败,需要找到对应的依赖重新进行安装。
对于gr-comedi,会出现以下错误提示:
checking no
gr-comedi requires comedilib, not found.
Not building component gr-comedi.
这说明需要安装 comedilib。
对于gr-uhd,会出现以下错误提示:
checking no
gr-uhd requires
Not building component gr-uhd.
这说明UHD还没有被安装,因为GNU Radio本身并不包含UHD,因此需要额外再进行安装。可在终端中执行:
git clone /EttusResearch/
以完成安装,之后再在gnuradio-3.4.2目录中执行./configure,检验gr-uhd是否已经配置成功。具体的安装步骤参见以下链接:
/redmine/ettus/projects/uhd/wiki
若还出现了上述未曾提到的错误,就需要根据相应的错误提示查找原因,大部分都是因为依赖条件没有完全满足。关于具体的配置信息,可在gnuradio-3.4.2目录中的文件中查阅得到。在其中搜索相应的组件名或“no”即可很快地查到不能满足的某些依赖,然后再google或到新立得中进行查找和安装即可。
特别注意
虽然上面说得简单,但是通常完全成功地完成configure是一个很漫长的过程,特别是有可能出现很多莫名其妙的错误,而且这类错误通常都是因为自己系统配置问题而产生的(比如我同时安装了python2.6和2.7),因此就需要进行大量的搜索来找到相应问题的解决方案。有时候甚至需要将相关的依赖和GNU
Radio重复安装很多遍才能成功configure,恐怕这与安装的顺序有关,即必须要先安装好了依赖之后,才能安装GNU Radio,但是具体情况究竟如何,我也说不好。不过有一点可以肯定的是,如果configure没有成功,那么就不能进行下一步的make和make install,即便强制进行,也是不成功的。因此能否configure成功,是能否成功安装GNU Radio的关键。
d. 配置USRP(Configure USRP)
在链接:
/redmine/projects/gnuradio/wiki/UbuntuInstall
中可找到关于USRP的配置方法。具体操作如下:
打开终端,输入以下命令:
sudo addgroup usrp
sudo usermod -G usrp -a YOUR_USERNAME(用自己的用户名替代)
echo 'ACTION=="add", BUS=="usb", SYSFS{idVendor}=="fffe", SYSFS{idProduct}=="0002",
GROUP:="usrp", MODE:="0660"' > tmpfile
sudo chown tmpfile
sudo mv tmpfile /etc/udev/rules.d/
sudo udevadm control --reload-rules
然后执行:
ls -lR /dev/bus/usb | grep usrp
如果看到类似下面的信息:
crw-rw---- 1 root usrp 189, 514 Mar 24 09:46 003
说明USRP已经能被电脑识别了。
至此,两种安装GNU Radio的方法已经介绍完了,下面就要对是否真的安装成功进行测试了。
测试GNU Radio
(1) 对GNU Radio和USRP的测试,按如下步骤进行:
a、 测试dial_
cd /usr/local/share/gnuradio/examples/audio
python dial_
b、 自己编写一个简单的GRC流程图,生成.py后,进行测试。
(2) 对USRP的测试,按照如下步骤操作:
a、 测试系统能否识别USRP设备:
ls -lR /dev/bus/usb | grep usrp
b、 测试Python对USRP的接口:
cd /usr/local/share/gnuradio/examples/usrp
python usrp_benchmark_
c、 测试C++对USRP的接口:
cd ~/gnuradio-3.4.2/usrp/host/apps
./test_usrp_standard_tx
./test_usrp_standard_rx
d、 测试图形界面:
cd /usr/local/bin
python usrp_
e、 测试USRP的收发功能:
cd /usr/local/share/gnuradio/examples/digital
python benchmark_ -f 900M -d 64 -m gmsk -R A
python benchmark_ -f 900M -T A -m gmsk -M 100
关于USRP的测试步骤,来源于:
i.
m
ii. 海曼USRP系列产品配套光盘使用说明
/projects/wirelessVideo/project/GNU_Radio_USRP/how_to_test_如果顺利的话,一切到此就结束了,终于可以为整个安装过程画上一个句号了!
卸载GNU Radio
卸载GNU Radio的方法主要总结自以下链接:
/topic/570713
/topic/179475
卸载步骤如下:
(1) 基本卸载
a、 自编译安装
sudo make uninstall
make clean
b、 git安装
git clean -dfx
(2) 附加删除
sudo su
PREFIX=/usr/local
rm -rf $PREFIX/bin/gr_plot_*
rm -rf $PREFIX/bin/usrp*
rm -rf $PREFIX/bin/grc
rm -rf $PREFIX/bin/find_usrps
rm -rf $PREFIX/bin/lsusrp
rm -rf $PREFIX/bin/test_all
rm -rf $PREFIX/etc/gnuradio
rm -rf $PREFIX/include/gnuradio
rm -rf $PREFIX/include/gruel
rm -rf $PREFIX/include/fpga_*
rm -rf $PREFIX/include/mb_*
rm -rf $PREFIX/include/mblock
rm -rf $PREFIX/include/pmt*
rm -rf $PREFIX/include/usrp*
rm -rf $PREFIX/lib/libgnuradio*
rm -rf $PREFIX/lib/libgr*
rm -rf $PREFIX/lib/libmblock*
rm -rf $PREFIX/lib/libpmt*
rm -rf $PREFIX/lib/libusrp*
rm -rf $PREFIX/lib/python2.6/dist-packages/gnuradio
rm -rf $PREFIX/lib/python2.6/dist-packages/usrpm
rm -rf $PREFIX/lib/python2.6/dist-packages/grc
rm -rf $PREFIX/lib/python2.6/dist-packages/grc_gnuradio
rm -rf $PREFIX/lib/pkgconfig/gnuradio*.pc
rm -rf $PREFIX/lib/pkgconfig/gr-wxgui*.pc
rm -rf $PREFIX/lib/pkgconfig/
rm -rf $PREFIX/lib/pkgconfig/
rm -rf $PREFIX/lib/pkgconfig/
rm -rf $PREFIX/lib/pkgconfig/usrp*.pc
rm -rf $PREFIX/share/doc/gnuradio*
rm -rf $PREFIX/share/doc/usrp*
rm -rf $PREFIX/share/gnuradio
rm -rf $PREFIX/share/grc
rm -rf $PREFIX/share/usrp
ldconfig
卸载完成,并进行常规安装完后,需要再次在新立得中重新安装libgnuradio-core,即可完成对GNU
Radio的安装。
安装过程回顾
此次安装过程中遇到的最大问题,就是Python的版本问题。刚开始安装时,由于对GNU Radio的编译安装不了解,因此在看到 gr-comedi没有build成功时,经过搜索后,误以为是Python没有安装,因而下载了Python2.7的源码进行安装。但是在安装完成之后,才发现原来Ubuntu 10.04已经自带了Python2.6,能够满足GNU Radio安装的要求。由此,因为Python的版本问题,而导致了一系列的components build不成功。
在未安装Python2.7之前,只有gr-comedi 、gr-uhd 等少数几个不能成功build;但是在安装Python2.7之后,近乎一半的components无法build成功,如下:
gr-comedi
gr-wxgui
gr-qtgui
gr-utils
grc
gr-uhd
gr-shd
从这开始,就陷入了无尽地搜索和尝试过程中,试图解决build的问题。
首先,我以为是下载的GNU Radio有问题,于是乎在
/files/build-gnuradio
处找到了“build-gnuradio”这样一个安装shell,可以一步到位地完成GNU Radio的依赖配置、下载、编译和安装,并且包括了 与USRP相关的gr-uhd,而不用再一步步地按照官网Wiki里的步骤来做了。当然这对于我们对安装过程的理解是不利的,但的确方便了我们。
在运行完此脚本之后,理论上安装过程已经完成了,只要再配置好Python的环境变量之后就可以测试了。在终端中对Python的环境变量的配置操作如下:
添加环境变量PYTHONPATH到~/.bashrc文件中的命令:
1、 执行
cd ~
gedit .bashrc
2、 将
PYTHONPATH=/usr/local/lib/python2.6/dist-packages
export PYTHONPATH
拷贝到.bashrc文件的最后,保存后退出;
3、 执行
source .bashrc
刷新.bashrc文件
关于对.bashrc文件的功能描述,见下面的链接:
/starspace/archive/2009/02/23/
/it/?id=2796
但是,由于Python2.7版本的问题,导致在完成了上述步骤之后,已经能够运行GRC并生成简单的流图程序,而且能够在终端中运行dial_,运行方法为:
python dial_
./dial_
终止程序的方法是:ctrl+c
当然,如果当前有进程占用了声卡,则运行时会出现以下错误:
audio_alsa_sink[hw:0,0]: Device or resource busy
Traceback (most recent call last):
File "dial_", line 56, in
my_top_block().run()
File "dial_", line 49, in __init__
dst = (sample_rate, _output)
File "/usr/local/lib/python2.6/dist-packages/gnuradio/audio/audio_", line 345, in sink
return _audio_(*args, **kwargs)
RuntimeError: audio_alsa_sink
参考链接:
/?
可以得到如下的解决方法:
在终端中用
ps -A
或
命令查看所有的进程,将占用声卡hd-audio0对应的进程给kill掉,然后才能正常运行dial_。
但是,在直接运行GRC生成的程序时,却会报错:
ImportError: can't find gr
ImportError: can't find Numpy ……
出现此类的错误时,首先需要确认Python的环境变量是否设置错误,比如单词拼写错误。可以通过查看$PYTHONPATH变量的值来确定,通过在终端中执行:
ls $PYTHONPATH
来确认路径是否设置正确;然后,再需要检查对应的路径下面(比如/usr/local/lib/python2.6/dist-packages)中是否包含gnuradio、grc_gnuradio等文件夹,以及gnuradio中是否包括gr、Numpy等关于依赖环境的文件夹。若
没有,则说明很有可能依赖环境没有安装成功,因此需要重新安装。可以考虑去搜索一下所缺少的各个组件官网,从上面下载源代码,进行解压、./configure、make和sudo make install等安装过程。在此次对GNU Radio的安装过程中,由于Python的版本问题,Numpy被安装到了Python2.7所在的文件夹里了,而由于Python关联的是2.7版本的,而GNU Radio的部分依赖环境可能又是依赖于2.6版本的,不管怎样,总之在对GNU Radio进行./configure的过程中,总是报出上述的错误。
在对wxWidgets、Numpy、qwt等依赖环境进行了反反复复几次的安装之后,仍旧未能解决上述依赖的问题。直到在搜索关于“设定Python多版本的切换以及设定默认版本”的问题时,发现了如下的一篇博文:
/2011/10/15/
在这篇帖子中,博主详细说明了如何对多个版本的Python的共存进行处理。根据其中的叙述和解决办法,终于将Python2.6设置成了Python的默认版本,并将其与“Python”命令进行了关联,在终端中可查询修改结果,操作如下:
python -V
其它的一些常用命令详见博文。
在这之后,再对GNU Radio的源码进行./configure操作时,一切问题都迎刃而解了,所有过程一次通过。当然,由于之前已经用 “build-gnuradio”脚本进行了完全的安装,所以已经不需要再执行make和make install的操作了。对GNU Radio的例程进行测试,一切正常!
附录
虽然由于一开始的失误,导致后来一直被Python的版本问题所困扰,但在这样一个过程中,我也再次对ubuntu的环境进行了一次熟悉,特别是在.2压缩文件的解压与安装、终端命令的操作等方面有了一个提高,同时也收集了不少与GNU Radio相关的网站和资料,这也算是为以后的工作打下基础吧,至少以后再碰上类似的问题,即便不能直接解决,也能知道该去哪些地方查资料。
现将收集资料整理如下:
关于GNU Radio的安装:
Introduction:/redmine/projects/gnuradio/wiki
Download:/redmine/projects/gnuradio/wiki/Download
Build Guide:/redmine/projects/gnuradio/wiki/BuildGuide
Installing GR:/redmine/projects/gnuradio/wiki/InstallingGR
Tutorials:/redmine/projects/gnuradio/wiki/Tutorials
关于GNU Radio的编程:
How to Use GR:/redmine/projects/gnuradio/wiki/HowToUse
GRC:/redmine/projects/gnuradio/wiki/GNURadioCompanion
Tutorials Write Python Applications:/redmine/projects/gnuradio/wiki/TutorialsWritePythonApplications
Simulations:/redmine/projects/gnuradio/wiki/Simulations
GNU Radio Documentation:/gnuradio/sphinx/
Forum:/forum/gnuradio
GR中国:/
关于Ubuntu系统的操作:
解压命令tar:/blog/20060820/
vi编辑器:/ubuntu-linux/
/usr/lib和/usr/local/lib:/blog/584568
终端命令:/UbuntuHelp:UsingTheTerminal/zh
获得root权限:/?t=8957
创建快捷方式:/?f=86&t=59840&start=0
版权声明:本文标题:GNU Radio安装总结 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1708393879h522491.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论