Build Instructions and Information: Difference between revisions

From GNU Radio
Jump to navigation Jump to search
(Initial page creation, content taken straight from latest version of build_guide.dox.in)
 
(Replaced content with "Removing page, all this info is in InstallingGR and https://www.gnuradio.org/doc/doxygen/build_guide.html")
 
Line 1: Line 1:
At some point this info needs to be merged with [[InstallingGRFromSource]] and [[BuildGuide]]
Removing page, all this info is in [[InstallingGR]] and https://www.gnuradio.org/doc/doxygen/build_guide.html
 
 
==Dependencies==
 
The list of GNU Radio dependencies and the minimum required versions,
if any, to build the various GNU Radio components.
 
Most of these components do not need to be individually compiled or
installed. Instead, rely on your operating system's package manager or
binary installation process (the <b>apt-get</b> or \b apt system in Debian and
Ubuntu, <b>yum</b> or \b dnf in RedHat and Fedora, etc.). GNU Radio tries to keep an
up-to-date build guide for the majority of the supported operating
systems on gnuradio.org
(https://wiki.gnuradio.org/index.php/BuildGuide).
 
Not all dependencies are required for all components, and not all
components are required for a given installation. The list of required
components is determined by what the user requires from GNU Radio. If,
for example, you do not use any Comedi-based hardware, do not worry
about building gr-comedi.
 
Before trying to build these from source, please try your system's
installation tool (apt-get, pkg_install, YaST, yum, urpmi, etc.)
first. Most recent systems have these packages available.
 
===Global Dependencies===
 
* git                                        http://git-scm.com/downloads
* cmake      (>= @GR_CMAKE_MIN_VERSION@)    http://www.cmake.org/cmake/resources/software.html
* boost      (>= @GR_BOOST_MIN_VERSION@)    http://www.boost.org/users/download/
* mako        (>= @GR_MAKO_MIN_VERSION@)    http://www.makotemplates.org/download.html
* log4cpp    (>= 1.0)                      http://log4cpp.sourceforge.net/
 
A C/C++ compiler is also required. These are known to work:
 
* gcc/g++    (>= @GCC_MIN_VERSION@)        https://gcc.gnu.org/install/download.html
* clang/clang++ (>= @CLANG_MIN_VERSION@)    http://releases.llvm.org/download.html
 
Other compilers may work, but are not supported.
 
===Python Wrappers===
* python      (>= @GR_PYTHON_MIN_VERSION@)  http://www.python.org/download/
* swig        (>= @GR_SWIG_MIN_VERSION@)    http://www.swig.org/download.html
* numpy      (>= 1.1.0)                    http://sourceforge.net/projects/numpy/files/NumPy/
 
===docs: Building the documentation===
* doxygen    (>= 1.5)    http://www.stack.nl/~dimitri/doxygen/download.html
 
===grc: The GNU Radio Companion===
* Cheetah    (>= 2.0)    http://www.cheetahtemplate.org/
* pygtk      (>= 2.10)    http://www.pygtk.org/downloads.html
 
===gr-fft: Fast Frequency Transform===
* fftw3f      (>= 3.0.1)  http://www.fftw.org/download.html
 
===gr-zeromq: ZeroMQ Network layer===
* ZeroMQ      (>= 3.2.5)      http://www.zeromq.org/
* cppzmq      (>= git 6c17af2) https://github.com/zeromq/cppzmq
 
cppzmq is included (undocumentedly) in the debian and Ubuntu libzmq3-dev packages.
 
===gr-wavelet: Collection of wavelet blocks===
* gsl        (>= 1.10)    http://gnuwin32.sourceforge.net/packages/gsl.htm
 
===gr-qtgui: The QT-based Graphical User Interface===
* qt4        (>= 4.4.0)  http://qt.nokia.com/downloads/
* qwt        (>= 5.2.0)  http://sourceforge.net/projects/qwt/
* pyqt        (>= 4.10.0)  http://www.riverbankcomputing.co.uk/software/pyqt/download
* python-lxml (>= 1.3.6)  http://lxml.de/
 
===gr-audio: Audio Subsystems (system/OS dependent)===
* audio-alsa  (>= 0.9)    http://www.alsa-project.org
* audio-jack  (>= 0.8)    http://jackaudio.org/
* portaudio  (>= 19)      http://www.portaudio.com/
* audio-oss  (>= 1.0)    http://www.opensound.com/oss.html
* audio-osx
* audio-windows
 
<b>Optional</b>
 
It is not necessary to satisfy all of these dependencies; just the
one(s) that are right for your system. On Linux, don't expect
audio-osx and audio-windows to be either satisfied or built.
 
===uhd: The Ettus USRP Hardware Driver Interface===
* uhd        (>= 3.5.5)  https://www.ettus.com/downloads
 
===gr-fcd: The FunCube Dongle hardware interface (only if you want to use one)===
* libUSB(x)  (version platform-dependent)  http://www.libusb.info/
 
===gr-video-sdl: PAL and NTSC display (rarely used)===
* SDL         (>= 1.2.0)  http://www.libsdl.org/download-1.2.php
 
===gr-comedi: Comedi hardware interface (only if you know what this is)===
 
* comedilib  (>= 0.8.1)  http://www.comedi.org/
 
\ref page_ctrlport may use various backends to perform the RPC
process, and each is its own dependency.
 
Currently, ControlPort only supports the Apache Thrift backend.
 
* thrift      (>= 0.9.2)  https://thrift.apache.org/
 
To have nice formula formatting in doxygen, you'll need LaTeX; for python docs, sphinx:
 
* latex        (>= 2.0)    http://www.latex-project.org/
* sphinx      (>= 1.2.2)  http://www.sphinx-doc.org/
 
==Building GNU Radio==
 
GNU Radio is built using the CMake build system
(http://www.cmake.org/). The standard build method is as follows:
 
$ mkdir $(builddir)
$ cd $(builddir)
$ cmake [OPTIONS] $(srcdir)
$ make
$ make test
$ sudo make install
 
The \$(builddir) is the directory in which the code is built. This
<b>cannot</b> be the same path as where the source code resides. Often,
\$(builddir) is \$(srcdir)/build.
 
==CMake Options==
 
Options can be used to specify where to find various library or
include file dependencies that are not automatically being found
(-DCMAKE_PREFIX_PATH) or set the install prefix
(-DCMAKE_INSTALL_PREFIX=(dir)).
 
Components can also be enabled and disabled through the options. For a
component named *gr-comp*, the option to disable would look like:
-DENABLE_GR_COMP=off. The "off" could also be "false" or "no", and
cmake is not case sensitive about these options. Similarly, "true",
"on", or "yes" will turn this component on. All components are enabled
by default so long as their dependencies are met.
 
An example is -DENABLE_PYTHON=False turns off building any Python or
Swigging components. The result will be the GNU Radio libraries and
C++ programs/applications/examples. No Python or GRC files will be
built or installed.
 
The -DENABLE_DEFAULT=False can be used to disable all
components. Individual components can then be selectively turned back
on. For example, just buidling the VOLK library can be
done with this:
 
cmake -DENABLE_DEFAULT=Off -DENABLE_VOLK=True <srcdir>
 
The build type allows you to specify the build as a debug or release
version. Each type sets different flags for different purposes. To set
the build type, use:
 
-DCMAKE_BUILD_TYPE=<type>
 
The available build types and the C/C++ flags they set are:
 
* None: No flags; define them yourself
* Release: -O3
* Debug: -O2 -g
* RelWithDebInfo: -O3 -g
* MinSizeRel: -Os
* NoOptWithASM: -O0 -g -save-temps
* O2WithASM: -O2 -g -save-temps
* O3WithASM: -O3 -g -save-temps
 
If not specified, the "Release" mode is the default.
 
===Collection of CMake Flags===
 
* CMAKE_BUILD_TYPE: Build profile type defined above. Default is "release".
* CMAKE_INSTALL_PREFIX: Installation prefix path. Default is "/usr/local".
* ENABLE_PYTHON: Turn Python bindings on/off. Default is True.
* ENABLE_GR_<component>: Turn any top-level component on/off. Default is True for all.
* ENABLE_GR_CTRLPORT: Turn Building ControlPort. Default is True
* ENABLE_PERFORMANCE_COUNTERS: Turn performance counters on/off in runtime. Default is True.
* ENABLE_ORC: tells VOLK enable/disable use of Orc. Default is True.
* ENABLE_STATIC_LIBS: build static library files. Default is False.
* CMAKE_TOOLCHAIN_FILE: A toolchain file to setup the CMake environment for cross-compiling.
 
Here are some other potentially helpful CMake flags. These are to help you specifically locate certain dependencies. While the CMake scripts themselves should generally find these for us, we can use these to help direct CMake to specific locations if we have installed a different version elsewhere on the system that CMake doesn't know about.
 
* QWT_LIBRARIES: shared library to use for Qwt (in the form \<path\>/libqwt.so).
* QWT_INCLUDE_DIRS: path to Qwt include files (e.g., /usr/include/qwt).
* PYTHON_EXECUTABLE: Location of the 'python' binary you want to use (e.g., /usr/bin/python2.7).
* PYTHON_INCLUDE_PATH: path to Python include files (e.g., /usr/include/python2.7).
* PYTHON_LIBRARY: Python's shared library location (e.g., /usr/lib/python2.7.so.1).
* Boost_INCLUDE_DIR: location of the 'boost' header file directory (e.g., /usr/include).
* Boost_LIBRARY_DIRS: location of the libboost-xxx.so files (e.g., /usr/lib)
 
Other dependencies will have similar settings like these to properly locate them.
 
===Building for the E100===
 
To build GNU Radio on the Ettus Research E100 embedded platforms,
CMake has to know that the processors uses the NEON extensions. Use
the
 
cmake -DCMAKE_CXX_FLAGS:STRING="-mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -g" \
      -DCMAKE_C_FLAGS:STRING="-mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -g" \
        <gr_source_dir>

Latest revision as of 16:59, 19 May 2019