nuttx/Documentation/quickstart/compiling.rst

87 lines
2.3 KiB
ReStructuredText
Raw Normal View History

.. include:: /substitutions.rst
.. _compiling:
=========
Compiling
=========
Now that we've installed Apache NuttX prerequisites and downloaded the source code,
we are ready to compile the source code into an executable binary file that can
be run on the embedded board.
Initialize Configuration
========================
The first step is to initialize NuttX configuration for a given board, based from
a pre-existing configuration. To list all supported configurations you can do:
.. code-block:: console
$ cd nuttx
$ ./tools/configure.sh -L | less
The output is in the format ``<board name>:<board configuration>``. You will see that
generally all boards support the ``nsh`` configuration which is a good sarting point
since it enables booting into the interactive command line
:doc:`/components/nsh/index`.
To choose a configuration you pass the ``<board name>:<board configuration>`` option
to ``configure.sh`` and indicate your host platform, such as:
.. code-block:: console
$ cd nuttx
$ ./tools/configure.sh -l stm32f4discovery:nsh
The ``-l`` tells use that we're on Linux (macOS and Windows builds are
possible). Use the ``-h`` argument to see all available options.
Customize Your Configuration (Optional)
=======================================
This step is optional. Right now, this is mainly to get familiar with how it
works you don't need to change any of the options now, but knowing how
to do this will come in handy later.
There are a lot of options. We'll cover a few of them here.
Don't worry about the complexity you don't have to use most of the options.
.. code-block:: console
$ cd nuttx/
$ make menuconfig
.. todo::
Explain some useful options.
Build NuttX
===========
We can now build NuttX. To do so, you can simply run:
.. code-block:: console
$ cd nuttx/
$ make make
The build will complete by generating the binary outputs
inside `nuttx` directory. Typically this includes the `nuttx`
ELF file (suitable for debugging using `gdb`) and a `nuttx.bin`
file that can be flashed to the board.
To clean the build, you can do:
.. code-block:: console
$ make clean
.. warning::
At the moment it is recommended that after modifying the
configuration you first clean before building again. This
is currently worked on.
----
Next up is :ref:`running`.