Building GNU Radio on Ubuntu Linux
GNU Radio 發(fā)行版 3.2
GNU Radio 最新發(fā)行版 3.2, 已經(jīng)對 Ubuntu 9.04 (Jaunty) 有二進(jìn)制的安裝包(binary package)。再也不需預(yù)先手動安裝構(gòu)建工具和進(jìn)行從繁瑣的源碼安裝了。而且 USRP 和 USRP2 的安裝和配置是自動完成的。這是最快和最簡潔的方法讓 GNU Radio 平臺運(yùn)行在你的系統(tǒng)上。
以下的篇幅有點(diǎn)過時(shí)而且布局也需做些調(diào)整。
GNU Radio 最新發(fā)行版 3.2, 已經(jīng)對 Ubuntu 9.04 (Jaunty) 有二進(jìn)制的安裝包(binary package)。再也不需預(yù)先手動安裝構(gòu)建工具和進(jìn)行從繁瑣的源碼安裝了。而且 USRP 和 USRP2 的安裝和配置是自動完成的。這是最快和最簡潔的方法讓 GNU Radio 平臺運(yùn)行在你的系統(tǒng)上。
以下的篇幅有點(diǎn)過時(shí)而且布局也需做些調(diào)整。
安 裝選項(xiàng)
這兒提供的信息和腳本用于編譯和安裝 GNU Radio 及所需的后臺程序、庫,其可用于 Ubuntu Linux 6.10 ("Edgy") 或其后的版本;也可能適用于此前的版本但這些沒有被測試過。
在 Ubuntu 6.10 ("Edgy") 上安裝 GNU Radio 可以由二進(jìn)制的安裝包(binary package)和軟件包管理器基本上完成,但是也有部分軟件包需要下載源碼以及從源碼編譯。
在 Ubuntu 7.04 ("Feisty") 及其后的版本上安裝 GNU Radio 可以完全由二進(jìn)制的安 裝包(binary package)和軟件包管理器完成,或者由下載源碼再編譯也可。
備注: GNU Radio 版本 3.0.3 及更早的版本安裝在 Ubuntu 7.04 ("Feisty") 上時(shí)使用 USRP 功能不穩(wěn)定; USRP 工作一陣子便死機(jī),需 USRP 或 Ubuntu 重新啟動。 在 SVN 可以找到對此的修補(bǔ)。
這兒提供的信息和腳本用于編譯和安裝 GNU Radio 及所需的后臺程序、庫,其可用于 Ubuntu Linux 6.10 ("Edgy") 或其后的版本;也可能適用于此前的版本但這些沒有被測試過。
在 Ubuntu 6.10 ("Edgy") 上安裝 GNU Radio 可以由二進(jìn)制的安裝包(binary package)和軟件包管理器基本上完成,但是也有部分軟件包需要下載源碼以及從源碼編譯。
在 Ubuntu 7.04 ("Feisty") 及其后的版本上安裝 GNU Radio 可以完全由二進(jìn)制的安 裝包(binary package)和軟件包管理器完成,或者由下載源碼再編譯也可。
備注: GNU Radio 版本 3.0.3 及更早的版本安裝在 Ubuntu 7.04 ("Feisty") 上時(shí)使用 USRP 功能不穩(wěn)定; USRP 工作一陣子便死機(jī),需 USRP 或 Ubuntu 重新啟動。 在 SVN 可以找到對此的修補(bǔ)。
在 Ubuntu 6.10 ("Edgy") 上安裝 GNU Radio 可以由二進(jìn)制的安裝包(binary package)和軟件包管理器基本上完成,但是也有部分軟件包需要下載源碼以及從源碼編譯。
在 Ubuntu 7.04 ("Feisty") 及其后的版本上安裝 GNU Radio 可以完全由二進(jìn)制的安 裝包(binary package)和軟件包管理器完成,或者由下載源碼再編譯也可。
備注: GNU Radio 版本 3.0.3 及更早的版本安裝在 Ubuntu 7.04 ("Feisty") 上時(shí)使用 USRP 功能不穩(wěn)定; USRP 工作一陣子便死機(jī),需 USRP 或 Ubuntu 重新啟動。 在 SVN 可以找到對此的修補(bǔ)。
基于源碼構(gòu)建時(shí)的先決條件
以下軟件包是安裝 GNU Radio 到 Ubuntu 上為編譯源碼所需。 這些軟件包可以通過 "synaptic"、 "dselect"、 或 "apt-get" 來安裝。除非有明確的強(qiáng)調(diào),在此便認(rèn)為各個(gè)軟件包都應(yīng)該安裝最新的版本。- 開發(fā)用工具 (編譯時(shí)所需)
- g++
- subversion
- make
- autoconf, automake, libtool
- sdcc (從 "universe"; 2.4 或 更新的)
- guile (1.6 或更新的)
- ccache (不是必須的, 如果頻繁編譯的話建議安裝)
- 庫 (實(shí)時(shí)運(yùn)行和編譯所需)
- python-dev
- FFTW 3.X (fftw3, fftw3-dev)
- cppunit (libcppunit 和 libcppunit-dev)
- Boost 1.35 (或更新的)
- libusb and libusb-dev
- wxWidgets (wx-common) 和 wxPython (python-wxgtk2.8)
- python-numpy (籍借 python-numpy-ext) (for SVN on or after 2007-May-28)
- ALSA (alsa-base, libasound2 和 libasound2-dev)
- Qt (libqt3-mt-dev 用于比 8.04 更早的版本; version 4 用于 8.04 和以后的 )
- SDL (libsdl-dev)
- GSL GNU Scientific Library (libgsl0-dev >= 1.10 required for SVN trunk, not in binary repositories for 7.10 and earlier)
- SWIG (1.3.31 或 更新的)
- Edgy 及以前版本: 基于源碼安裝時(shí)所需
- Feisty 或更新的版本: 使用標(biāo)準(zhǔn)軟件包安裝(swig)
- QWT (可選項(xiàng)) (5.0.0 或更新的版本)
- 必須由源碼安裝 (注:當(dāng)下 2008-01-15).
- 8.04 和 8.10 應(yīng)當(dāng)使用 qt4. 鍵入如下命令 :
sudo apt-get update 便可升級為合適的 qt4.- QWT Plot3d Lib
- 必須安裝從而使 gr-qtgui 能夠工作。 Ubuntu 8.04 和 8.10 最好使用 qt4。
- 例程(Polyphase Filter Bank examples)
- 以便使 gnuradio-examples/python/pfb 下的例程能夠工作,需要安裝 python-scipy, python-matplotlib, 和 python-tk
- 其它
- doxygen (以便能夠從源碼生成文檔)
- octave (from "universe")
以下軟件包是安裝 GNU Radio 到 Ubuntu 上為編譯源碼所需。 這些軟件包可以通過 "synaptic"、 "dselect"、 或 "apt-get" 來安裝。除非有明確的強(qiáng)調(diào),在此便認(rèn)為各個(gè)軟件包都應(yīng)該安裝最新的版本。
- 開發(fā)用工具 (編譯時(shí)所需)
- g++
- subversion
- make
- autoconf, automake, libtool
- sdcc (從 "universe"; 2.4 或 更新的)
- guile (1.6 或更新的)
- ccache (不是必須的, 如果頻繁編譯的話建議安裝)
- 庫 (實(shí)時(shí)運(yùn)行和編譯所需)
- python-dev
- FFTW 3.X (fftw3, fftw3-dev)
- cppunit (libcppunit 和 libcppunit-dev)
- Boost 1.35 (或更新的)
- libusb and libusb-dev
- wxWidgets (wx-common) 和 wxPython (python-wxgtk2.8)
- python-numpy (籍借 python-numpy-ext) (for SVN on or after 2007-May-28)
- ALSA (alsa-base, libasound2 和 libasound2-dev)
- Qt (libqt3-mt-dev 用于比 8.04 更早的版本; version 4 用于 8.04 和以后的 )
- SDL (libsdl-dev)
- GSL GNU Scientific Library (libgsl0-dev >= 1.10 required for SVN trunk, not in binary repositories for 7.10 and earlier)
- SWIG (1.3.31 或 更新的)
- Edgy 及以前版本: 基于源碼安裝時(shí)所需
- Feisty 或更新的版本: 使用標(biāo)準(zhǔn)軟件包安裝(swig)
- QWT (可選項(xiàng)) (5.0.0 或更新的版本)
- 必須由源碼安裝 (注:當(dāng)下 2008-01-15).
- 8.04 和 8.10 應(yīng)當(dāng)使用 qt4. 鍵入如下命令 :
sudo apt-get update 便可升級為合適的 qt4.
- QWT Plot3d Lib
- 必須安裝從而使 gr-qtgui 能夠工作。 Ubuntu 8.04 和 8.10 最好使用 qt4。
- 例程(Polyphase Filter Bank examples)
- 以便使 gnuradio-examples/python/pfb 下的例程能夠工作,需要安裝 python-scipy, python-matplotlib, 和 python-tk
- 其它
- doxygen (以便能夠從源碼生成文檔)
- octave (from "universe")
安裝腳本
籍希望能提供足夠多的指導(dǎo)來將 GNU Radio 設(shè)置并運(yùn)行于 Ubuntu 上,如下腳本的目的是用來“牽手”大多數(shù)的用戶將 GNU Radio 安裝在一個(gè)典型的 Ubuntu 上。
- Edgy
此部分僅針對 Edgy 或更早的版本(除非是想去除 CDROM 功能,對于 Feisty 或新于它的版本而言,不需做任何更改):通過如下兩種方法之一手動注釋所 有的庫使得包含 "universe" 和 "multiverse"
sudo <EDITOR> /etc/apt/sources.list (方法之一)
或
通過圖形界面 GUI:沿著 System -> Administration -> Software Sources。然后鍵入 admin 的密碼進(jìn)入。在 "Ubuntu" tab 上,確認(rèn)所有的 "main restricted universe multiverse" 的選項(xiàng)被選中而其它部分沒有被選中(或者做認(rèn)為對設(shè)置合適的工作)。順序點(diǎn)擊"Close" 和 "Reload" 來更新軟件包的列單。文件 "/etc/apt/sources.list" 內(nèi)被注釋的行列將會如下一般讀入 (DIST 是其具體的發(fā)行版本名,諸如:edgy, feisty, gusty, 等等):deb http://us.archive.ubuntu.com/ubuntu/ DIST main restricted universe multiverse
deb http://us.archive.ubuntu.com/ubuntu/ DIST-updates main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu/ DIST-security main restricted universe multiverse
更新 本地 dpkg 緩存:
sudo apt-get update
安裝所需的包(有些似乎已經(jīng)被 Ubuntu 缺省的安裝上了;有一些似乎同其它的相重疊;無論如何這些包含了除 Edgy 之外所需的所有軟件包)
- Lucid (10.04):
sudo apt-get -y install libfontconfig1-dev libxrender-dev libpulse-dev swig g++ automake libtool python-dev libfftw3-dev \
libcppunit-dev libboost-all-dev libusb-dev fort77 sdcc sdcc-libraries \
libsdl1.2-dev python-wxgtk2.8 subversion git-core 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
- Karmic (9.10):
sudo apt-get -y install swig g++ automake libtool python-dev libfftw3-dev \
libcppunit-dev libboost1.38-dev libusb-dev fort77 sdcc sdcc-libraries \
libsdl1.2-dev python-wxgtk2.8 subversion git-core 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
- Jaunty (9.04):
需安裝軟件包 sdcc-nf needs (而不是 sdcc)sudo apt-get -y install swig g++ automake1.9 libtool python2.5-dev fftw3-dev \
libcppunit-dev libboost1.35-dev sdcc-nf libusb-dev \
libsdl1.2-dev python-wxgtk2.8 subversion 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-wxgtk2.6。其原因是 python-wxgtk2.6 比 python-wxgtk2.8 有更高的優(yōu)先級被安裝,它必須使用如下指令被去除:
sudo apt-get remove python-wxgtk2.6
- Intrepid (8.10):
需安裝軟件包 sdcc-nf needs (而不是 sdcc)sudo apt-get -y install swig g++ automake1.9 libtool python-dev fftw3-dev \
libcppunit-dev libboost1.35-dev sdcc-nf libusb-dev \
libsdl1.2-dev python-wxgtk2.8 subversion 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
- Hardy (8.04):
如 README.building-boost 所闡述的一樣應(yīng)當(dāng)安裝 Boost。sudo apt-get -y install swig g++ automake1.9 libtool python-dev fftw3-dev \
libcppunit-dev sdcc libusb-dev libasound2-dev libsdl1.2-dev \
python-wxgtk2.8 subversion guile-1.8-dev libqt4-dev python-numpy-ext \
ccache python-opengl libgsl0-dev python-cheetah python-lxml doxygen \
libqwt5-qt4-dev libqwtplot3d-qt4-dev qt4-dev-tools
- Gutsy (7.10):
如 README.building-boost 文檔所闡述的一樣應(yīng)當(dāng)安裝 Boost。也需要 GSL 。
sudo apt-get -y install g++ automake libtool python-dev fftw3-dev \
libcppunit-dev sdcc libusb-dev libasound2-dev \
libsdl1.2-dev python-wxgtk2.8 subversion guile-1.8-dev libgsl0-dev \
libqt3-mt-dev python-numpy-ext swig ccache
- Feisty (7.04):
如 README.building-boost 文檔所闡述的一樣應(yīng)當(dāng)安裝 Boost。也需要 GSL 。sudo apt-get -y install g++ automake1.9 libtool python-dev fftw3-dev \
libcppunit-dev sdcc libusb-dev libasound2-dev \
libsdl1.2-dev python-wxgtk2.8 subversion guile-1.6-dev\
libqt3-mt-dev python-numpy-ext swig ccache
- Edgy (6.10):
強(qiáng) 烈建議使用上面的新發(fā)行版之一sudo apt-get -y install g++ automake1.9 libtool python-dev fftw3-dev \
libcppunit-dev libboost-dev sdcc libusb-dev libasound2-dev \
libsdl1.2-dev python-wxgtk2.6 subversion guile-1.6-dev \
libqt3-mt-dev python-numpy-ext ccache
備注:如上的 Edgy 安裝 python-wxgtk-2.6。這對于 GNURadio 以前的版本的用戶是沒問題,但對于最新 GNURadio 的 svn snapshots (svn 快照技術(shù))顯得過于古老。若想基于最新的 svn 快照技術(shù) (svn snapshot)構(gòu)建 GNURadio,便需 wxgtk version 2.8 或更新。
可以到 wxwidgets debian 和 ubuntu 的知識棧庫安裝最新的版本的 wxwidgets。
查閱 Installing latest wxgtk-2.8 packages on debian or Ubuntu 進(jìn)行選項(xiàng)安裝;有些也許已經(jīng)在以前的命令中已經(jīng)被成功地安裝到系統(tǒng)中。
sudo apt-get -y install gkrellm wx-common libwxgtk2.8-dev alsa-base autoconf xorg-dev g77 gawk bison openssh-server emacs cvs usbview octave
(以下)僅適于 Edgy : 獲取、編譯、然后安裝 SWIG wget http://prdownloads.sourceforge.net/swig/swig-1.3.33.tar.gz
tar zxf swig-1.3.33.tar.gz
cd swig-1.3.33
./configure
make
sudo make install
cd ..
可選項(xiàng):獲取、編譯、然后安裝 QWT 5.0.0 (或 更新):
備注: 不必設(shè)置諸如 "QTDIR" 或 "QWT_CFLAGS" 的環(huán)境變量, (在此)不必理睬這些。wget http://superb-east.dl.sourceforge.net/sourceforge/qwt/qwt-5.0.2.tar.bz2
tar jxf qwt-5.0.2.tar.bz2
cd qwt-5.0.2
- 現(xiàn)在編輯 qwtconfig.pri:
將 UNIX 版本的 "INSTALLBASE”置換為 “/usr/local”(原為 "/usr/local/qwt-5.0.2");
將原來的 "doc.path" 變換為 "$$INSTALLBASE/doc/qwt" ;
Save, exit(保存,推出)。
"doc" 是由 HTML 和 man 格式構(gòu)建,這些都位于 /usr/local/doc/{html,man}。它不是標(biāo)準(zhǔn)路徑,但分離出這些似乎也不是一件容易的事情,所以對它棄之不予理睬:
qmake
make
sudo make install
cd ..
籍希望能提供足夠多的指導(dǎo)來將 GNU Radio 設(shè)置并運(yùn)行于 Ubuntu 上,如下腳本的目的是用來“牽手”大多數(shù)的用戶將 GNU Radio 安裝在一個(gè)典型的 Ubuntu 上。
- Edgy
此部分僅針對 Edgy 或更早的版本(除非是想去除 CDROM 功能,對于 Feisty 或新于它的版本而言,不需做任何更改):
通過如下兩種方法之一手動注釋所 有的庫使得包含 "universe" 和 "multiverse"
sudo <EDITOR> /etc/apt/sources.list (方法之一)
或
通過圖形界面 GUI:沿著 System -> Administration -> Software Sources。然后鍵入 admin 的密碼進(jìn)入。在 "Ubuntu" tab 上,確認(rèn)所有的 "main restricted universe multiverse" 的選項(xiàng)被選中而其它部分沒有被選中(或者做認(rèn)為對設(shè)置合適的工作)。順序點(diǎn)擊"Close" 和 "Reload" 來更新軟件包的列單。文件 "/etc/apt/sources.list" 內(nèi)被注釋的行列將會如下一般讀入 (DIST 是其具體的發(fā)行版本名,諸如:edgy, feisty, gusty, 等等):
deb http://us.archive.ubuntu.com/ubuntu/ DIST main restricted universe multiverse
deb http://us.archive.ubuntu.com/ubuntu/ DIST-updates main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu/ DIST-security main restricted universe multiverse
deb http://us.archive.ubuntu.com/ubuntu/ DIST-updates main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu/ DIST-security main restricted universe multiverse
更新 本地 dpkg 緩存:
sudo apt-get update
安裝所需的包(有些似乎已經(jīng)被 Ubuntu 缺省的安裝上了;有一些似乎同其它的相重疊;無論如何這些包含了除 Edgy 之外所需的所有軟件包)
- Lucid (10.04):
sudo apt-get -y install libfontconfig1-dev libxrender-dev libpulse-dev swig g++ automake libtool python-dev libfftw3-dev \
libcppunit-dev libboost-all-dev libusb-dev fort77 sdcc sdcc-libraries \
libsdl1.2-dev python-wxgtk2.8 subversion git-core 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
- Karmic (9.10):
sudo apt-get -y install swig g++ automake libtool python-dev libfftw3-dev \
libcppunit-dev libboost1.38-dev libusb-dev fort77 sdcc sdcc-libraries \
libsdl1.2-dev python-wxgtk2.8 subversion git-core 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
- Jaunty (9.04):
需安裝軟件包 sdcc-nf needs (而不是 sdcc)
sudo apt-get -y install swig g++ automake1.9 libtool python2.5-dev fftw3-dev \
libcppunit-dev libboost1.35-dev sdcc-nf libusb-dev \
libsdl1.2-dev python-wxgtk2.8 subversion 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-wxgtk2.6。其原因是 python-wxgtk2.6 比 python-wxgtk2.8 有更高的優(yōu)先級被安裝,它必須使用如下指令被去除:
sudo apt-get remove python-wxgtk2.6
- Intrepid (8.10):
需安裝軟件包 sdcc-nf needs (而不是 sdcc)
sudo apt-get -y install swig g++ automake1.9 libtool python-dev fftw3-dev \
libcppunit-dev libboost1.35-dev sdcc-nf libusb-dev \
libsdl1.2-dev python-wxgtk2.8 subversion 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
- Hardy (8.04):
如 README.building-boost 所闡述的一樣應(yīng)當(dāng)安裝 Boost。
sudo apt-get -y install swig g++ automake1.9 libtool python-dev fftw3-dev \
libcppunit-dev sdcc libusb-dev libasound2-dev libsdl1.2-dev \
python-wxgtk2.8 subversion guile-1.8-dev libqt4-dev python-numpy-ext \
ccache python-opengl libgsl0-dev python-cheetah python-lxml doxygen \
libqwt5-qt4-dev libqwtplot3d-qt4-dev qt4-dev-tools
- Gutsy (7.10):
如 README.building-boost 文檔所闡述的一樣應(yīng)當(dāng)安裝 Boost。也需要 GSL 。
sudo apt-get -y install g++ automake libtool python-dev fftw3-dev \
libcppunit-dev sdcc libusb-dev libasound2-dev \
libsdl1.2-dev python-wxgtk2.8 subversion guile-1.8-dev libgsl0-dev \
libqt3-mt-dev python-numpy-ext swig ccache
- Feisty (7.04):
如 README.building-boost 文檔所闡述的一樣應(yīng)當(dāng)安裝 Boost。也需要 GSL 。
sudo apt-get -y install g++ automake1.9 libtool python-dev fftw3-dev \
libcppunit-dev sdcc libusb-dev libasound2-dev \
libsdl1.2-dev python-wxgtk2.8 subversion guile-1.6-dev\
libqt3-mt-dev python-numpy-ext swig ccache
- Edgy (6.10):
強(qiáng) 烈建議使用上面的新發(fā)行版之一
sudo apt-get -y install g++ automake1.9 libtool python-dev fftw3-dev \
libcppunit-dev libboost-dev sdcc libusb-dev libasound2-dev \
libsdl1.2-dev python-wxgtk2.6 subversion guile-1.6-dev \
libqt3-mt-dev python-numpy-ext ccache
備注:如上的 Edgy 安裝 python-wxgtk-2.6。這對于 GNURadio 以前的版本的用戶是沒問題,但對于最新 GNURadio 的 svn snapshots (svn 快照技術(shù))顯得過于古老。若想基于最新的 svn 快照技術(shù) (svn snapshot)構(gòu)建 GNURadio,便需 wxgtk version 2.8 或更新。
可以到 wxwidgets debian 和 ubuntu 的知識棧庫安裝最新的版本的 wxwidgets。
查閱 Installing latest wxgtk-2.8 packages on debian or Ubuntu 進(jìn)行選項(xiàng)安裝;有些也許已經(jīng)在以前的命令中已經(jīng)被成功地安裝到系統(tǒng)中。
可以到 wxwidgets debian 和 ubuntu 的知識棧庫安裝最新的版本的 wxwidgets。
查閱 Installing latest wxgtk-2.8 packages on debian or Ubuntu 進(jìn)行選項(xiàng)安裝;有些也許已經(jīng)在以前的命令中已經(jīng)被成功地安裝到系統(tǒng)中。
sudo apt-get -y install gkrellm wx-common libwxgtk2.8-dev alsa-base autoconf xorg-dev g77 gawk bison openssh-server emacs cvs usbview octave
(以下)僅適于 Edgy : 獲取、編譯、然后安裝 SWIG
wget http://prdownloads.sourceforge.net/swig/swig-1.3.33.tar.gz
tar zxf swig-1.3.33.tar.gz
cd swig-1.3.33
./configure
make
sudo make install
cd ..
可選項(xiàng):獲取、編譯、然后安裝 QWT 5.0.0 (或 更新):
備注: 不必設(shè)置諸如 "QTDIR" 或 "QWT_CFLAGS" 的環(huán)境變量, (在此)不必理睬這些。
wget http://superb-east.dl.sourceforge.net/sourceforge/qwt/qwt-5.0.2.tar.bz2
tar jxf qwt-5.0.2.tar.bz2
cd qwt-5.0.2
- 現(xiàn)在編輯 qwtconfig.pri:
將 UNIX 版本的 "INSTALLBASE”置換為 “/usr/local”(原為 "/usr/local/qwt-5.0.2");
將原來的 "doc.path" 變換為 "$$INSTALLBASE/doc/qwt" ;
Save, exit(保存,推出)。
將原來的 "doc.path" 變換為 "$$INSTALLBASE/doc/qwt" ;
Save, exit(保存,推出)。
"doc" 是由 HTML 和 man 格式構(gòu)建,這些都位于 /usr/local/doc/{html,man}。它不是標(biāo)準(zhǔn)路徑,但分離出這些似乎也不是一件容易的事情,所以對它棄之不予理睬:
qmake
make
sudo make install
cd ..
安裝 Boost
對于 Ubuntu 8.04 或更早的版本,下載并安裝 Boost 1.35 或更新版本如下(參閱文檔 README.building-boost):
1) 在 boost.sourceforge.net 下載最新的 boost 的版本 (在寫此文時(shí) boost_1_37_0.tar.bz2 是最新的版本)。
2) 就地解壓縮并進(jìn)入該目錄
$ cd boost_1_37_0
3) 選擇前綴來安裝。比如使用 /opt/boost_1_37_0
$ BOOST_PREFIX=/opt/boost_1_37_0
4) 配置
$ ./configure --prefix=$BOOST_PREFIX --with-libraries=thread,date_time,program_options
5) 編譯
$ make
6) 安裝
$ sudo make install
$ cd ..
對于 Ubuntu 8.04 或更早的版本,下載并安裝 Boost 1.35 或更新版本如下(參閱文檔 README.building-boost):
1) 在 boost.sourceforge.net 下載最新的 boost 的版本 (在寫此文時(shí) boost_1_37_0.tar.bz2 是最新的版本)。
2) 就地解壓縮并進(jìn)入該目錄
$ cd boost_1_37_0
3) 選擇前綴來安裝。比如使用 /opt/boost_1_37_0
$ BOOST_PREFIX=/opt/boost_1_37_0
4) 配置
$ ./configure --prefix=$BOOST_PREFIX --with-libraries=thread,date_time,program_options
5) 編譯
$ make
6) 安裝
$ sudo make install
$ cd ..
安裝 GNU Radio
- 下載、bootstrap、配置,和編譯 GNU Radio 軟件包:
- 使 用 git 來安裝 GNU Radio
git clone http://gnuradio.org/git/gnuradio.git
cd gnuradio
export LD_LIBRARY_PATH=$BOOST_PREFIX/lib # As per the instructions for installing Boost
./bootstrap
./configure --with-boost=$BOOST_PREFIX # As per the instructions for installing Boost
make
可選項(xiàng):運(yùn)行 GNU Radio 的自檢程序;這并不需 USRP。
make check
即使有一個(gè)甚至一些測試沒能通過,但 GNU Radio 也有可能功能性正常工作。盡管如此,到郵件列表尋求解決的方案或者將解決的方案貢獻(xiàn)到列表是比較理智的做法。有此善舉之時(shí),不要忘記附帶如下信息:OS 類型、OS 版本、CPU 類型(諸如,使用"uname -a"獲得的)、任何有關(guān)硬件的特別之處、軟件的版本(諸如:gcc, g++, swig, sdcc, 等)以及如何安裝(標(biāo)準(zhǔn)或非標(biāo)軟件包,源代碼)。
- 下面,就一般用途安裝 GNU Radio (缺省安裝到 /usr/local):
sudo make install- Ubuntu 使用 udev 來處理設(shè)備的熱插拔問題,而且缺省地不給 non-root 用戶提供讀取 USRP 的權(quán)限。以 下腳本摘自 directions,它賦予群在無論在在線或熱插拔狀態(tài)下,都能夠通過 USB 掌控 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 root.root tmpfile
sudo mv tmpfile /etc/udev/rules.d/10-usrp.rules
- 至此,配置后的 Ubuntu 知道如何處置在 USB 上檢測到的 USRP,除非該“udev”需要重載更新,以便包含剛產(chǎn)生的新規(guī)約。如下可能如此, 如果異常的話,重啟計(jì)算機(jī)將肯定如愿。
sudo udevadm control --reload-rules
或sudo /etc/init.d/udev stop
sudo /etc/init.d/udev start
或sudo killall -HUP udevd
當(dāng) USRP 被插入系統(tǒng)后,可以使用如下命令通過檢查 /dev/bus/usb 來查看是否被認(rèn)知:ls -lR /dev/bus/usb | grep usrp
結(jié)果會顯示一、兩行信息(每個(gè)USRP 占據(jù)一行)如下:crw-rw---- 1 root usrp 189, 514 Mar 24 09:46 003
每個(gè)設(shè)備文件的列表將以‘usrp' 作為群(group)、 'crw-rw----' 作為狀態(tài)(mode)。- 備注:如果系統(tǒng)是 Feisty 或更新的,或許需要重啟計(jì)算機(jī)以便使得 GNU Radio 正常接口 USRP。但對于 Edgy 這似乎是多余的。
- USRP 一旦被 Ubuntu 確認(rèn),接下來便是確認(rèn) GNU Radio 同 USRP 是否配合得當(dāng)(沒有安裝 USRP,當(dāng)然可以略過這一步)。或許 "usrp_benchmark_usb" 檢測表明無法達(dá)到滿負(fù)荷的 32 MB/s,但是先保證腳本至少可以運(yùn)行正常;如果有問題(腳本無法運(yùn)行正常),要么可能是 GNU Radio 系統(tǒng)出問題,要么可能是 USRP 無法讀取。在目錄 "gnuradio" 下,確認(rèn)以下步驟工作正常:
- Python 和 USRP 的接口;
測試宿主機(jī)和 USRP 之間一個(gè)大致的最大數(shù)據(jù)吞吐量(以 2 的冪來表示)。
cd gnuradio-examples/python/usrp
./usrp_benchmark_usb.py
- C++ 和 USRP 的接口;
測試宿主機(jī)和 USRP 之間一個(gè)大致的最大數(shù)據(jù)吞吐量(非量化)cd usrp/host/apps
./test_usrp_standard_tx
./test_usrp_standard_rx
- 升級系統(tǒng),操作完成后或許需要重啟系統(tǒng):
sudo apt-get -y upgrade
- 升級 Linux 的發(fā)布版本信息庫,完成后需重啟系統(tǒng):
sudo apt-get -y dist-upgrade
- 下載、bootstrap、配置,和編譯 GNU Radio 軟件包:
- 使 用 git 來安裝 GNU Radio
git clone http://gnuradio.org/git/gnuradio.git
cd gnuradio
export LD_LIBRARY_PATH=$BOOST_PREFIX/lib # As per the instructions for installing Boost
./bootstrap
./configure --with-boost=$BOOST_PREFIX # As per the instructions for installing Boost
make
可選項(xiàng):運(yùn)行 GNU Radio 的自檢程序;這并不需 USRP。
make check
即使有一個(gè)甚至一些測試沒能通過,但 GNU Radio 也有可能功能性正常工作。盡管如此,到郵件列表尋求解決的方案或者將解決的方案貢獻(xiàn)到列表是比較理智的做法。有此善舉之時(shí),不要忘記附帶如下信息:OS 類型、OS 版本、CPU 類型(諸如,使用"uname -a"獲得的)、任何有關(guān)硬件的特別之處、軟件的版本(諸如:gcc, g++, swig, sdcc, 等)以及如何安裝(標(biāo)準(zhǔn)或非標(biāo)軟件包,源代碼)。
- 下面,就一般用途安裝 GNU Radio (缺省安裝到 /usr/local):
sudo make install
- Ubuntu 使用 udev 來處理設(shè)備的熱插拔問題,而且缺省地不給 non-root 用戶提供讀取 USRP 的權(quán)限。以 下腳本摘自 directions,它賦予群在無論在在線或熱插拔狀態(tài)下,都能夠通過 USB 掌控 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 root.root tmpfile
sudo mv tmpfile /etc/udev/rules.d/10-usrp.rules
- 至此,配置后的 Ubuntu 知道如何處置在 USB 上檢測到的 USRP,除非該“udev”需要重載更新,以便包含剛產(chǎn)生的新規(guī)約。如下可能如此, 如果異常的話,重啟計(jì)算機(jī)將肯定如愿。
sudo udevadm control --reload-rules
或
sudo /etc/init.d/udev stop
sudo /etc/init.d/udev start
或
sudo killall -HUP udevd
當(dāng) USRP 被插入系統(tǒng)后,可以使用如下命令通過檢查 /dev/bus/usb 來查看是否被認(rèn)知:
ls -lR /dev/bus/usb | grep usrp
結(jié)果會顯示一、兩行信息(每個(gè)USRP 占據(jù)一行)如下:
crw-rw---- 1 root usrp 189, 514 Mar 24 09:46 003
每個(gè)設(shè)備文件的列表將以‘usrp' 作為群(group)、 'crw-rw----' 作為狀態(tài)(mode)。
- 備注:如果系統(tǒng)是 Feisty 或更新的,或許需要重啟計(jì)算機(jī)以便使得 GNU Radio 正常接口 USRP。但對于 Edgy 這似乎是多余的。
- USRP 一旦被 Ubuntu 確認(rèn),接下來便是確認(rèn) GNU Radio 同 USRP 是否配合得當(dāng)(沒有安裝 USRP,當(dāng)然可以略過這一步)。或許 "usrp_benchmark_usb" 檢測表明無法達(dá)到滿負(fù)荷的 32 MB/s,但是先保證腳本至少可以運(yùn)行正常;如果有問題(腳本無法運(yùn)行正常),要么可能是 GNU Radio 系統(tǒng)出問題,要么可能是 USRP 無法讀取。在目錄 "gnuradio" 下,確認(rèn)以下步驟工作正常:
- Python 和 USRP 的接口;
測試宿主機(jī)和 USRP 之間一個(gè)大致的最大數(shù)據(jù)吞吐量(以 2 的冪來表示)。
cd gnuradio-examples/python/usrp
./usrp_benchmark_usb.py
- C++ 和 USRP 的接口;
測試宿主機(jī)和 USRP 之間一個(gè)大致的最大數(shù)據(jù)吞吐量(非量化)
cd usrp/host/apps
./test_usrp_standard_tx
./test_usrp_standard_rx
- 升級系統(tǒng),操作完成后或許需要重啟系統(tǒng):
sudo apt-get -y upgrade
- 升級 Linux 的發(fā)布版本信息庫,完成后需重啟系統(tǒng):
sudo apt-get -y dist-upgrade
Debian 和 Ubuntu 系統(tǒng)的的 libtool 故障
Debian 和 Ubuntu 系統(tǒng)在完善 libtool 的 upstream version 不盡人意,它們在安裝代碼和庫之前會失去測試的這些代碼和庫能力。但是安裝之前的測試不失是個(gè)好主意。為了解決這個(gè)問題,請將把 $PREFIX/lib (和 64 位機(jī)器的 $PREFIX/lib64) 包含在 /etc/ld.so.conf 之中。
如果沒有這樣做的話(把 $PREFIX/lib包含在 /etc/ld.so.conf 之中),在構(gòu)建的鏈接階段便會看見出錯(cuò)信息。這現(xiàn)象將會在多處出現(xiàn)。最有可能是在構(gòu)建 mblocks 第一次出現(xiàn)。這不是 mblocks 的問題,是 Debian/Ubuntu 自身的問題。
如下步驟便可解決這些“問題”:
1) 將當(dāng)前的 ld.so.conf 文件拷貝并保存到 temp 目錄下如下:
cp /etc/ld.so.conf /tmp/ld.so.conf
2) 添加路徑 /usr/local/lib:
echo /usr/local/lib >> /tmp/ld.so.conf
3)如果手動安裝 Boost (比如:version 1_37_0),添加它的庫函數(shù)路徑如下:
echo /opt/boost_1_37_0/lib >> /tmp/ld.so.conf
4) 刪除原 ld.so.conf 文件,用如上編輯后的文件替代它:
sudo mv /tmp/ld.so.conf /etc/ld.so.conf
5) 運(yùn)行 ldconfig:
sudo ldconfig