2 # Copyright 2001,2002,2003,2004,2005,2006,2007,2009 Free Software Foundation, Inc.
4 # This file is part of GNU Radio
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)
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.
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.
25 Please see http://gnuradio.org/trac for the wiki, bug tracking,
26 and source code viewer. If you've got questions about GNU Radio, please
27 subscribe to the discuss-gnuradio mailing list and post your questions
28 there. http://gnuradio.org/trac/wiki/MailingLists
29 There is also a "Build Guide" in the wiki that contains OS specific
30 recommendations. See http://gnuradio.org/trac/wiki/BuildGuide
33 The bleeding edge code can be found in our subversion repository at
34 http://gnuradio.org/svn. To checkout the latest, use this
37 $ svn co http://gnuradio.org/svn/gnuradio/trunk gnuradio
39 For information about subversion, please see:
40 http://subversion.tigris.org/
43 How to Build GNU Radio:
45 (1) Ensure that you've satisfied the external dependencies listed
46 below. The word "system" is used to mean "operating system
47 and/or distribution", and means a full operating system,
48 including kernel, user-space utilties, and a packaging system
49 for additional software. On Linux, this means what
52 With the exception of SDCC, the following GNU/Linux
53 distributions are known to come with all required dependencies
54 pre-packaged: Ubuntu 8.10, SuSE 10.0 (the pay version, not the
55 free download), Fedora Core 9. Other distribution may work too.
56 We know these three are easy. The required packages may be
57 contained on your installation CD/DVD, or may be loaded over the
58 net. The specifics vary depending on your GNU/Linux
61 On systems using pkgsrc (e.g. NetBSD and Dragonfly), build
62 meta-packages/gnuradio, which will build a previous release and
63 force installation of the dependencies. Then pkg_delete the
64 gnuradio and usrp packages, which will leave the dependencies.
65 (This should also work on OSX.)
67 See the wiki at http://gnuradio.org/trac/wiki for details.
70 (2) do the "usual dance"
72 $ ./bootstrap # not reqd when building from the tarball
81 -------------------------------------------------------------------------------
83 KNOWN INCOMPATIBILITIES
86 GNU Radio triggers bugs in g++ 3.3 for X86. DO NOT USE GCC 3.3 on
87 the X86 platform. g++ 3.2, 3.4, and the 4.* series are known to work well.
89 -------------------------------------------------------------------------------
91 -------------------------------------------------------------------------------
95 -------------------------------------------------------------------------------
97 Prerequisites: Before trying to build these from source, please try
98 your system's installation tool (apt-get, pkg_install, YaST, yum,
99 urpmi, etc.) first. Most recent systems have these packages
102 You'll need to do a bit of sleuthing to figure out what your OS and
103 packaging system calls these. If your system uses the convention of
104 splitting files needed to run programs compiled with foo and files
105 needed to do the compilation into packages named foo and foo-devel,
106 install both packages. (Most GNU/Linux systems are like this, but
107 pkgsrc is not and instead uses -devel to indicate a package of a
108 not-yet-released or unstable version.)
110 For those using pkgsrc, see gnuradio-pkg_chk.conf. Those not using
111 pkgsrc may also find the list useful.
115 It used to be required to have a "reasonable make", meaning GNU make,
116 BSD make, or perhaps Solaris make. It is now required to use GNU
117 make. Version 3.81 should certainly work; the intent is not to
118 require the bleeding edge.
120 Note that the examples below are written with "make". They probably
121 should say "gmake", as GNU make is installed as gmake when it is not
126 autoconf 2.57 or later
127 automake 1.7.4 or later
130 If your system has automake-1.4, there's a good chance it also has
131 automake-1.7 or later. Check your install disk and/or (on GNU/Linux)
134 $ man update-alternatives
136 for info on how some distributions support multiple versions.
139 (2) pkgconfig 0.15.0 or later http://www.freedesktop.org/Software/pkgconfig
143 pkgconfig is a system for managing library compile/link flags that
144 works with automake and autoconf. It replaces the ubiquitous *-config
145 scripts you may have seen with a single tool.
148 (3) FFTW 3.0 or later http://www.fftw.org
150 IMPORTANT!!! When building FFTW, you MUST use the --enable-single and
151 --enable-shared configure options. This builds the single precision
152 floating point version which we use. You should also use either the
153 --enable-3dnow or --enable-sse options if you're on an Athlon or Pentium
156 [FIXME: GNU/Linux packages of single-precision fftw are typically called ??]
158 In systems using pkgsrc, install math/fftwf, which provides the
159 single-precision libraries.
162 (4) Python 2.5 or later http://www.python.org
164 Python 2.5 or later is now required. If your system splits
165 python into a bunch of separate packages including python-devel or
166 libpython you'll most likely need those too.
169 (5) Numpy python library http://numeric.scipy.org
171 Provides a high performance array type for Python.
172 http://numpy.scipy.org
173 http://sourceforge.net/project/showfiles.php?group_id=1369&package_id=175103
176 (6) The Boost C++ Libraries (1.35 or later) http://www.boost.org
178 We use Smart Pointers, the thread library and a bunch of other boost stuff.
179 If your system doesn't have boost 1.35 or later, see README.building-boost
180 for additional info. (Note: Mac OSX systems require 1.37 or later.)
183 (7) cppunit 1.9.14 or later. http://cppunit.sourceforge.net
185 Unit testing framework for C++.
188 (8) Simple Wrapper Interface Generator. http://www.swig.org
190 As of repository version 4045, gnuradio requires version 1.3.31 or newer.
193 (9) SDCC: Small Device C Compiler. http://sdcc.sourceforge.net/
195 Use version 2.4.0 or later.
197 This includes a C compiler and linker for the 8051. It's required to
198 build the firmware for the USRP. If you don't have a USRP, don't
202 (10) Guile 1.6 or 1.8
204 Scheme interpreter. http://www.gnu.org/software/guile/guile.html
207 (11) GNU Scientific Library (gsl) 1.10 or later
209 The GNU Radio core library uses some routines from here.
212 Optional, but nice to have:
214 (12) wxPython. Python binding for the wxWidgets GUI framework. Use
215 version 2.8 or later. Again, almost all systems have this
218 As a last resort, build it from source (not recommended!)
219 http://www.wxpython.org
221 (13) xmlto version ? or later. http://cyberelk.net/tim/xmlto/index.html
223 Wrapper for XML conversion tools to ease e.g. making html from docbook.
225 (14) Python Cheetah extensions 2.0.0 or later
226 (15) Python lxml wrappers 2.0.0 or later
227 (16) Python gtk wrappers 2.10.0 or later
229 The GNU Radio Companion application requires these additional Python libraries
232 ----------------------------------------------------------------
234 If you've got doxygen installed, the build process creates
235 documentation for the class hierarchy etc. Point your browser at
236 gnuradio/gnuradio-core/doc/html/index.html
239 To run the examples you may need to set PYTHONPATH. Note that the
240 prefix and python version number in the path needs to match your
241 installed version of python.
243 $ export PYTHONPATH=/usr/local/lib/python2.5/site-packages
245 You may want to add this to your shell init file (~/.bash_profile if
250 Another handy trick if for example your fftw includes and libs are
251 installed in, say ~/local/include and ~/local/lib, instead of
254 $ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/local/lib
255 $ make CPPFLAGS="-I$HOME/local/include"
258 Sometimes the prerequisites are installed in a location which is not
259 included in the default compiler and linker search paths. This
260 happens with pkgsrc and NetBSD. To build, tell configure to use these
263 LDFLAGS="-L/usr/pkg/lib -R/usr/pkg/lib" CPPFLAGS="-I/usr/pkg/include" ./configure --prefix=/usr/gnuradio