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


本文标签: 安装 进行 需要 依赖 问题