root / README @ b976c98f
History | View | Annotate | Download (8.7 kB)
| 1 | # |
|---|---|
| 2 | # Copyright 2001,2002,2003,2004,2005,2006,2007,2009 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 | 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 |
| 31 | |
| 32 | |
| 33 | The bleeding edge code can be found in our subversion repository at |
| 34 | http://gnuradio.org/svn. To checkout the latest, use this |
| 35 | command: |
| 36 | |
| 37 | $ svn co http://gnuradio.org/svn/gnuradio/trunk gnuradio |
| 38 | |
| 39 | For information about subversion, please see: |
| 40 | http://subversion.tigris.org/ |
| 41 | |
| 42 | |
| 43 | How to Build GNU Radio: |
| 44 | |
| 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 |
| 50 | "distribution" means. |
| 51 | |
| 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 |
| 59 | distribution. |
| 60 | |
| 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.) |
| 66 | |
| 67 | See the wiki at http://gnuradio.org/trac/wiki for details. |
| 68 | |
| 69 | |
| 70 | (2) do the "usual dance" |
| 71 | |
| 72 | $ ./bootstrap # not reqd when building from the tarball |
| 73 | $ ./configure |
| 74 | $ make && make check |
| 75 | $ sudo make install |
| 76 | |
| 77 | |
| 78 | That's it! |
| 79 | |
| 80 | |
| 81 | ------------------------------------------------------------------------------- |
| 82 | |
| 83 | KNOWN INCOMPATIBILITIES |
| 84 | |
| 85 | |
| 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. |
| 88 | |
| 89 | ------------------------------------------------------------------------------- |
| 90 | |
| 91 | ------------------------------------------------------------------------------- |
| 92 | |
| 93 | External dependencies |
| 94 | |
| 95 | ------------------------------------------------------------------------------- |
| 96 | |
| 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 |
| 100 | available. |
| 101 | |
| 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.) |
| 109 | |
| 110 | For those using pkgsrc, see gnuradio-pkg_chk.conf. Those not using |
| 111 | pkgsrc may also find the list useful. |
| 112 | |
| 113 | (0) GNU make |
| 114 | |
| 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. |
| 119 | |
| 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 |
| 122 | the native make. |
| 123 | |
| 124 | (1) The "autotools" |
| 125 | |
| 126 | autoconf 2.57 or later |
| 127 | automake 1.7.4 or later |
| 128 | libtool 1.5 or later |
| 129 | |
| 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) |
| 132 | try: |
| 133 | |
| 134 | $ man update-alternatives |
| 135 | |
| 136 | for info on how some distributions support multiple versions. |
| 137 | |
| 138 | |
| 139 | (2) pkgconfig 0.15.0 or later http://www.freedesktop.org/Software/pkgconfig |
| 140 | |
| 141 | From the web site: |
| 142 | |
| 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. |
| 146 | |
| 147 | |
| 148 | (3) FFTW 3.0 or later http://www.fftw.org |
| 149 | |
| 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 |
| 154 | respectively. |
| 155 | |
| 156 | [FIXME: GNU/Linux packages of single-precision fftw are typically called ??] |
| 157 | |
| 158 | In systems using pkgsrc, install math/fftwf, which provides the |
| 159 | single-precision libraries. |
| 160 | |
| 161 | |
| 162 | (4) Python 2.5 or later http://www.python.org |
| 163 | |
| 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. |
| 167 | |
| 168 | |
| 169 | (5) Numpy python library http://numeric.scipy.org |
| 170 | |
| 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 |
| 174 | |
| 175 | |
| 176 | (6) The Boost C++ Libraries (1.35 or later) http://www.boost.org |
| 177 | |
| 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.) |
| 181 | |
| 182 | |
| 183 | (7) cppunit 1.9.14 or later. http://cppunit.sourceforge.net |
| 184 | |
| 185 | Unit testing framework for C++. |
| 186 | |
| 187 | |
| 188 | (8) Simple Wrapper Interface Generator. http://www.swig.org |
| 189 | |
| 190 | As of repository version 4045, gnuradio requires version 1.3.31 or newer. |
| 191 | |
| 192 | |
| 193 | (9) SDCC: Small Device C Compiler. http://sdcc.sourceforge.net/ |
| 194 | |
| 195 | Use version 2.4.0 or later. |
| 196 | |
| 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 |
| 199 | worry about it. |
| 200 | |
| 201 | |
| 202 | (10) Guile 1.6 or 1.8 |
| 203 | |
| 204 | Scheme interpreter. http://www.gnu.org/software/guile/guile.html |
| 205 | |
| 206 | |
| 207 | (11) GNU Scientific Library (gsl) 1.10 or later |
| 208 | |
| 209 | The GNU Radio core library uses some routines from here. |
| 210 | |
| 211 | |
| 212 | Optional, but nice to have: |
| 213 | |
| 214 | (12) wxPython. Python binding for the wxWidgets GUI framework. Use |
| 215 | version 2.8 or later. Again, almost all systems have this |
| 216 | available. |
| 217 | |
| 218 | As a last resort, build it from source (not recommended!) |
| 219 | http://www.wxpython.org |
| 220 | |
| 221 | (13) xmlto version ? or later. http://cyberelk.net/tim/xmlto/index.html |
| 222 | |
| 223 | Wrapper for XML conversion tools to ease e.g. making html from docbook. |
| 224 | |
| 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 |
| 228 | |
| 229 | The GNU Radio Companion application requires these additional Python libraries |
| 230 | to be installed. |
| 231 | |
| 232 | ---------------------------------------------------------------- |
| 233 | |
| 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 |
| 237 | |
| 238 | |
| 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. |
| 242 | |
| 243 | $ export PYTHONPATH=/usr/local/lib/python2.5/site-packages |
| 244 | |
| 245 | You may want to add this to your shell init file (~/.bash_profile if |
| 246 | you use bash). |
| 247 | |
| 248 | |
| 249 | |
| 250 | Another handy trick if for example your fftw includes and libs are |
| 251 | installed in, say ~/local/include and ~/local/lib, instead of |
| 252 | /usr/local is this: |
| 253 | |
| 254 | $ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/local/lib |
| 255 | $ make CPPFLAGS="-I$HOME/local/include" |
| 256 | |
| 257 | |
| 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 |
| 261 | locations: |
| 262 | |
| 263 | LDFLAGS="-L/usr/pkg/lib -R/usr/pkg/lib" CPPFLAGS="-I/usr/pkg/include" ./configure --prefix=/usr/gnuradio |
| 264 |