| 1 |
# |
|---|
| 2 |
# Copyright 2001,2002,2003,2004,2005,2006,2007 Free Software Foundation, Inc. |
|---|
| 3 |
# |
|---|
| 4 |
# This file is part of GNU Radio |
|---|
| 5 |
# |
|---|
| 6 |
# GNU Radio is free software; you can redistribute it and/or modify |
|---|
| 7 |
# it under the terms of the GNU General Public License as published by |
|---|
| 8 |
# the Free Software Foundation; either version 3, or (at your option) |
|---|
| 9 |
# any later version. |
|---|
| 10 |
# |
|---|
| 11 |
# GNU Radio is distributed in the hope that it will be useful, |
|---|
| 12 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|---|
| 13 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|---|
| 14 |
# GNU General Public License for more details. |
|---|
| 15 |
# |
|---|
| 16 |
# You should have received a copy of the GNU General Public License |
|---|
| 17 |
# along with GNU Radio; see the file COPYING. If not, write to |
|---|
| 18 |
# the Free Software Foundation, Inc., 51 Franklin Street, |
|---|
| 19 |
# Boston, MA 02110-1301, USA. |
|---|
| 20 |
# |
|---|
| 21 |
|
|---|
| 22 |
Welcome to GNU Radio! |
|---|
| 23 |
|
|---|
| 24 |
|
|---|
| 25 |
As of August 3, 2006 we have restructured the GNU Radio build process |
|---|
| 26 |
and moved the source code repository from CVS to subversion. |
|---|
| 27 |
|
|---|
| 28 |
|
|---|
| 29 |
Please see http://gnuradio.org/trac for the wiki, bug tracking, |
|---|
| 30 |
and source code viewer. If you've got questions about GNU Radio, please |
|---|
| 31 |
subscribe to the discuss-gnuradio mailing list and post your questions |
|---|
| 32 |
there. http://gnuradio.org/trac/wiki/MailingLists |
|---|
| 33 |
There is also a "Build Guide" in the wiki that contains OS specific |
|---|
| 34 |
recommendations. See http://gnuradio.org/trac/wiki/BuildGuide |
|---|
| 35 |
|
|---|
| 36 |
|
|---|
| 37 |
The bleeding edge code can be found in our subversion repository at |
|---|
| 38 |
http://gnuradio.org/svn. To checkout the latest, use this |
|---|
| 39 |
command: |
|---|
| 40 |
|
|---|
| 41 |
$ svn co http://gnuradio.org/svn/gnuradio/trunk gnuradio |
|---|
| 42 |
|
|---|
| 43 |
For information about subversion, please see: |
|---|
| 44 |
http://subversion.tigris.org/ |
|---|
| 45 |
|
|---|
| 46 |
|
|---|
| 47 |
|
|---|
| 48 |
GNU Radio is now distributed as one giant blob, instead of N smaller |
|---|
| 49 |
blobs. We believe that this will reduce some of the build problems |
|---|
| 50 |
people were seeing. Now you'll always get all of the code, and the |
|---|
| 51 |
configure step will determine which components can be built on your |
|---|
| 52 |
system. |
|---|
| 53 |
|
|---|
| 54 |
|
|---|
| 55 |
How to Build GNU Radio: |
|---|
| 56 |
|
|---|
| 57 |
(1) Ensure that you've satisfied the external dependencies listed |
|---|
| 58 |
below. The word "system" is used to mean "operating system |
|---|
| 59 |
and/or distribution", and means a full operating system, |
|---|
| 60 |
including kernel, user-space utilties, and a packaging system |
|---|
| 61 |
for additional software. On Linux, this means what |
|---|
| 62 |
"distribution" means. |
|---|
| 63 |
|
|---|
| 64 |
With the exception of SDCC, the following GNU/Linux |
|---|
| 65 |
distributions are known to come with all required dependencies |
|---|
| 66 |
pre-packaged: Ubuntu 6.06, SuSE 10.0 (the pay version, not the |
|---|
| 67 |
free download), Fedora Core 5. Other distribution may work too. |
|---|
| 68 |
We know these three are easy. The required packages may be |
|---|
| 69 |
contained on your installation CD/DVD, or may be loaded over the |
|---|
| 70 |
net. The specifics vary depending on your GNU/Linux |
|---|
| 71 |
distribution. |
|---|
| 72 |
|
|---|
| 73 |
On systems using pkgsrc (e.g. NetBSD and Dragonfly), build |
|---|
| 74 |
meta-packages/gnuradio, which will build a previous release and |
|---|
| 75 |
force installation of the dependencies. Then pkg_delete the |
|---|
| 76 |
gnuradio and usrp packages, which will leave the dependencies. |
|---|
| 77 |
(This should also work on OSX.) |
|---|
| 78 |
|
|---|
| 79 |
See the wiki at http://gnuradio.org/trac/wiki for details. |
|---|
| 80 |
|
|---|
| 81 |
FIXME: update the wiki; talk about OS/X, NetBSD and MinGW too. |
|---|
| 82 |
|
|---|
| 83 |
(2) do the "usual dance" |
|---|
| 84 |
|
|---|
| 85 |
$ ./bootstrap # not reqd when building from the tarball |
|---|
| 86 |
$ ./configure |
|---|
| 87 |
$ make && make check |
|---|
| 88 |
$ sudo make install |
|---|
| 89 |
|
|---|
| 90 |
|
|---|
| 91 |
That's it! |
|---|
| 92 |
|
|---|
| 93 |
|
|---|
| 94 |
------------------------------------------------------------------------------- |
|---|
| 95 |
|
|---|
| 96 |
KNOWN INCOMPATIBILITIES |
|---|
| 97 |
|
|---|
| 98 |
|
|---|
| 99 |
GNU Radio triggers bugs in g++ 3.3 for X86. DO NOT USE GCC 3.3 on |
|---|
| 100 |
the X86 platform. g++ 3.2, 3.4, and the 4.* series are known to work well. |
|---|
| 101 |
|
|---|
| 102 |
------------------------------------------------------------------------------- |
|---|
| 103 |
|
|---|
| 104 |
------------------------------------------------------------------------------- |
|---|
| 105 |
|
|---|
| 106 |
External dependencies |
|---|
| 107 |
|
|---|
| 108 |
------------------------------------------------------------------------------- |
|---|
| 109 |
|
|---|
| 110 |
Prerequisites: Before trying to build these from source, please try |
|---|
| 111 |
your system's installation tool (apt-get, pkg_install, YaST, yum, |
|---|
| 112 |
urpmi, etc.) first. Most recent systems have these packages |
|---|
| 113 |
available. |
|---|
| 114 |
|
|---|
| 115 |
You'll need to do a bit of sleuthing to figure out what your OS and |
|---|
| 116 |
packaging system calls these. If your system uses the convention of |
|---|
| 117 |
splitting files needed to run programs compiled with foo and files |
|---|
| 118 |
needed to do the compilation into packages named foo and foo-devel, |
|---|
| 119 |
install both packages. (Most GNU/Linux systems are like this, but |
|---|
| 120 |
pkgsrc is not and instead uses -devel to indicate a package of a |
|---|
| 121 |
not-yet-released or unstable version.) |
|---|
| 122 |
|
|---|
| 123 |
For those using pkgsrc, see gnuradio-pkg_chk.conf. Those not using |
|---|
| 124 |
pkgsrc may also find the list useful. |
|---|
| 125 |
|
|---|
| 126 |
(0) GNU make |
|---|
| 127 |
|
|---|
| 128 |
It used to be required to have a "reasonable make", meaning GNU make, |
|---|
| 129 |
BSD make, or perhaps Solaris make. It is now required to use GNU |
|---|
| 130 |
make. Version 3.81 should certainly work; the intent is not to |
|---|
| 131 |
require the bleeding edge. |
|---|
| 132 |
|
|---|
| 133 |
Note that the examples below are written with "make". They probably |
|---|
| 134 |
should say "gmake", as GNU make is installed as gmake when it is not |
|---|
| 135 |
the native make. |
|---|
| 136 |
|
|---|
| 137 |
(1) The "autotools" |
|---|
| 138 |
|
|---|
| 139 |
autoconf 2.57 or later |
|---|
| 140 |
automake 1.7.4 or later |
|---|
| 141 |
libtool 1.5 or later |
|---|
| 142 |
|
|---|
| 143 |
If your system has automake-1.4, there's a good chance it also has |
|---|
| 144 |
automake-1.7 or later. Check your install disk and/or (on GNU/Linux) |
|---|
| 145 |
try: |
|---|
| 146 |
|
|---|
| 147 |
$ man update-alternatives |
|---|
| 148 |
|
|---|
| 149 |
for info on how some distributions support multiple versions. |
|---|
| 150 |
|
|---|
| 151 |
|
|---|
| 152 |
(2) pkgconfig 0.15.0 or later http://www.freedesktop.org/Software/pkgconfig |
|---|
| 153 |
|
|---|
| 154 |
From the web site: |
|---|
| 155 |
|
|---|
| 156 |
pkgconfig is a system for managing library compile/link flags that |
|---|
| 157 |
works with automake and autoconf. It replaces the ubiquitous *-config |
|---|
| 158 |
scripts you may have seen with a single tool. |
|---|
| 159 |
|
|---|
| 160 |
|
|---|
| 161 |
(3) FFTW 3.0 or later http://www.fftw.org |
|---|
| 162 |
|
|---|
| 163 |
IMPORTANT!!! When building FFTW, you MUST use the --enable-single and |
|---|
| 164 |
--enable-shared configure options. This builds the single precision |
|---|
| 165 |
floating point version which we use. You should also use either the |
|---|
| 166 |
--enable-3dnow or --enable-sse options if you're on an Athlon or Pentium |
|---|
| 167 |
respectively. |
|---|
| 168 |
|
|---|
| 169 |
[FIXME: GNU/Linux packages of single-precision fftw are typically called ??] |
|---|
| 170 |
|
|---|
| 171 |
In systems using pkgsrc, install math/fftwf, which provides the |
|---|
| 172 |
single-precision libraries. |
|---|
| 173 |
|
|---|
| 174 |
|
|---|
| 175 |
(4) Python 2.3 or later http://www.python.org |
|---|
| 176 |
|
|---|
| 177 |
Python 2.3 or later is now required. If your system splits |
|---|
| 178 |
python into a bunch of separate packages including python-devel or |
|---|
| 179 |
libpython you'll most likely need those too. |
|---|
| 180 |
|
|---|
| 181 |
|
|---|
| 182 |
(5) Numpy python library http://numeric.scipy.org |
|---|
| 183 |
|
|---|
| 184 |
Provides a high performance array type for Python. |
|---|
| 185 |
http://numpy.scipy.org |
|---|
| 186 |
http://sourceforge.net/project/showfiles.php?group_id=1369&package_id=175103 |
|---|
| 187 |
|
|---|
| 188 |
|
|---|
| 189 |
(6) The Boost C++ Libraries (1.35 or later) http://www.boost.org |
|---|
| 190 |
|
|---|
| 191 |
We use Smart Pointers, the thread library and a bunch of other boost stuff. |
|---|
| 192 |
If your system doesn't have boost 1.35 or later, see README.building-boost |
|---|
| 193 |
for additional info. |
|---|
| 194 |
|
|---|
| 195 |
|
|---|
| 196 |
(7) cppunit 1.9.14 or later. http://cppunit.sourceforge.net |
|---|
| 197 |
|
|---|
| 198 |
Unit testing framework for C++. |
|---|
| 199 |
|
|---|
| 200 |
|
|---|
| 201 |
(8) Simple Wrapper Interface Generator. http://www.swig.org |
|---|
| 202 |
|
|---|
| 203 |
As of repository version 4045, gnuradio requires version 1.3.31 or newer. |
|---|
| 204 |
|
|---|
| 205 |
|
|---|
| 206 |
(9) SDCC: Small Device C Compiler. http://sdcc.sourceforge.net/ |
|---|
| 207 |
|
|---|
| 208 |
Use version 2.4.0 or later. |
|---|
| 209 |
|
|---|
| 210 |
This includes a C compiler and linker for the 8051. It's required to |
|---|
| 211 |
build the firmware for the USRP. If you don't have a USRP, don't |
|---|
| 212 |
worry about it. |
|---|
| 213 |
|
|---|
| 214 |
(10) Guile 1.6 or 1.8 |
|---|
| 215 |
|
|---|
| 216 |
Scheme interpreter. http://www.gnu.org/software/guile/guile.html |
|---|
| 217 |
|
|---|
| 218 |
|
|---|
| 219 |
|
|---|
| 220 |
Optional, but nice to have: |
|---|
| 221 |
|
|---|
| 222 |
(11) wxPython. Python binding for the wxWidgets GUI framework. Use |
|---|
| 223 |
version 2.5.2.7 or later. Again, almost all systems have this |
|---|
| 224 |
available. |
|---|
| 225 |
|
|---|
| 226 |
As a last resort, build it from source (not recommended!) |
|---|
| 227 |
http://www.wxpython.org |
|---|
| 228 |
|
|---|
| 229 |
(12) xmlto version ? or later. http://cyberelk.net/tim/xmlto/index.html |
|---|
| 230 |
|
|---|
| 231 |
Wrapper for XML conversion tools to ease e.g. making html from docbook. |
|---|
| 232 |
|
|---|
| 233 |
|
|---|
| 234 |
---------------------------------------------------------------- |
|---|
| 235 |
|
|---|
| 236 |
If you've got doxygen installed and provide the --enable-doxygen |
|---|
| 237 |
configure option, the build process creates documentation for the |
|---|
| 238 |
class hierarchy etc. Point your browser at |
|---|
| 239 |
gnuradio/gnuradio-core/doc/html/index.html |
|---|
| 240 |
|
|---|
| 241 |
|
|---|
| 242 |
To run the examples you'll need to set PYTHONPATH. Note that the |
|---|
| 243 |
prefix and python version number in the path needs to match your |
|---|
| 244 |
installed version of python. |
|---|
| 245 |
|
|---|
| 246 |
$ export PYTHONPATH=/usr/local/lib/python2.4/site-packages |
|---|
| 247 |
|
|---|
| 248 |
You may want to add this to your shell init file (~/.bash_profile if |
|---|
| 249 |
you use bash). |
|---|
| 250 |
|
|---|
| 251 |
|
|---|
| 252 |
|
|---|
| 253 |
Another handy trick if for example your fftw includes and libs are |
|---|
| 254 |
installed in, say ~/local/include and ~/local/lib, instead of |
|---|
| 255 |
/usr/local is this: |
|---|
| 256 |
|
|---|
| 257 |
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/local/lib |
|---|
| 258 |
$ make CPPFLAGS="-I$HOME/local/include" |
|---|
| 259 |
|
|---|
| 260 |
|
|---|
| 261 |
Sometimes the prerequisites are installed in a location which is not |
|---|
| 262 |
included in the default compiler and linker search paths. This |
|---|
| 263 |
happens with pkgsrc and NetBSD. To build, tell configure to use these |
|---|
| 264 |
locations: |
|---|
| 265 |
|
|---|
| 266 |
LDFLAGS="-L/usr/pkg/lib -R/usr/pkg/lib" CPPFLAGS="-I/usr/pkg/include" ./configure --prefix=/usr/gnuradio |
|---|