root / README @ 34af4364
History | View | Annotate | Download (8.9 kB)
| 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 |