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.
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:
$ 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 starting point
since it enables booting into the interactive command line
To choose a configuration you pass the
<board name>:<board configuration> option
configure.sh and indicate your host platform, such as:
$ cd nuttx $ ./tools/configure.sh -l stm32f4discovery:nsh
-l tells use that we’re on Linux (macOS and Windows builds are
possible). Use the
-h argument to see all available options.
You can then customize this configuration by using the menu based configuration system with:
$ cd nuttx $ make menuconfig
Modifying the configuration is covered in Configuring.
We can now build NuttX. To do so, you can simply run:
$ cd nuttx $ make
The build will complete by generating the binary outputs
nuttx directory. Typically this includes the
ELF file (suitable for debugging using
gdb) and a
file that can be flashed to the board.
To clean the build, you can do:
$ make clean
To increase build speed (or of any other target such as
clean), you can
-jN flag to
N is the number of parallel jobs
to start (usually, the number of processors on your machine).