| Installing Native Toolchain |
| =========================== |
| |
| .. contents:: |
| :local: |
| :depth: 2 |
| |
| This page shows you how to install the toolchain to build Mynewt OS |
| applications that run native on Mac OS and Linux. The applications run |
| on Mynewt's simulated hardware. It also allows you to run the test |
| suites for all packages that do not require HW support. |
| |
| **Note:** This is not supported on Windows. |
| |
| Setting Up the Toolchain for Mac |
| -------------------------------- |
| |
| Installing Brew |
| ~~~~~~~~~~~~~~~ |
| |
| If you have not already installed Homebrew from the ``newt`` tutorials |
| pages install it (:doc:`../../newt/install/newt_mac`). |
| |
| Installing gcc/libc |
| ~~~~~~~~~~~~~~~~~~~ |
| |
| OS X ships with a C compiler called Clang. To build applications for the |
| Mynewt simulator with, a different compiler is used as default: gcc. |
| |
| .. code-block:: console |
| |
| $ brew install gcc |
| ... |
| ... |
| ==> Summary |
| 🍺 /usr/local/Cellar/gcc/5.2.0: 1353 files, 248M |
| |
| Check the gcc version you have installed (either using brew or |
| previously installed). The brew-installed version can be checked using |
| ``brew list gcc``. The default compiler.yml configuration file in Mynewt |
| expects version 5.x for Mac users, so if the installed version is 6.x |
| and you wish to continue with this newer version, modify the |
| ``<mynewt-src-directory>/repos/apache-mynewt-core/compiler/sim/compiler.yml`` |
| file to change the default ``gcc-5`` defined there to that displayed by |
| ``brew list gcc`` e.g. ``gcc-6``. In |
| other words, replace the lines shown highlighted below: |
| |
| .. code-block:: yaml |
| :emphasize-lines: 2,3 |
| |
| # OS X. |
| compiler.path.cc.DARWIN.OVERWRITE: "gcc-5" |
| compiler.path.as.DARWIN.OVERWRITE: "gcc-5" |
| compiler.path.objdump.DARWIN.OVERWRITE: "gobjdump" |
| compiler.path.objsize.DARWIN.OVERWRITE: "objsize" |
| compiler.path.objcopy.DARWIN.OVERWRITE: "gobjcopy" |
| |
| with the following: |
| |
| .. code-block:: yaml |
| |
| compiler.path.cc.DARWIN.OVERWRITE: "gcc-6" |
| compiler.path.as.DARWIN.OVERWRITE: "gcc-6” |
| |
| In case you wish to use Clang, you can change your |
| ``<mynewt-src-directory>/repos/apache-mynewt-core/compiler/sim/compiler.yml`` |
| to use Clang. Delete the gcc-5 DARWIN.OVERWRITE lines highlighted below. |
| |
| .. code-block:: yaml |
| :emphasize-lines: 2,3 |
| |
| # OS X. |
| compiler.path.cc.DARWIN.OVERWRITE: "gcc-5" |
| compiler.path.as.DARWIN.OVERWRITE: "gcc-5" |
| compiler.path.objdump.DARWIN.OVERWRITE: "gobjdump" |
| compiler.path.objsize.DARWIN.OVERWRITE: "objsize" |
| compiler.path.objcopy.DARWIN.OVERWRITE: "gobjcopy" |
| |
| **NOTE:** Both the newer gcc 6.x and Clang report a few warnings but |
| they can be ignored. |
| |
| **FURTHER NOTE:** Mynewt developers mostly use gcc 5.x for sim builds; |
| so it may take a little while to fix issues reported by the newer |
| compiler. One option is to **disable warnings**. To do that, remove the |
| ``-Werror`` flag as an option for the compiler in the |
| ``<mynewt-src-directory>/repos/apache-mynewt-core/compiler/sim/compiler.yml`` |
| file as shown below. |
| |
| .. code-block:: yaml |
| :emphasize-lines: 2 |
| |
| compiler.flags.base: > |
| -m32 -Wall -ggdb |
| |
| You may alternatively choose to **specify the precise warnings to |
| ignore** depending on the error thrown by the compiler. For example, if |
| you see a ``[-Werror=misleading-indentation]`` error while building the |
| sim image, add ``-Wno-misleading-indentation]`` as a compiler flag in |
| the same line from the |
| ``<mynewt-src-directory>/repos/apache-mynewt-core/compiler/sim/compiler.yml`` |
| file. |
| |
| .. code-block:: yaml |
| :emphasize-lines: 2 |
| |
| compiler.flags.base: > |
| -m32 -Wall -Werror -ggdb -Wno-misleading-indentation |
| |
| A third option is to simply **downgrade to gcc 5.x**. |
| |
| Installing gdb |
| ~~~~~~~~~~~~~~ |
| |
| .. code-block:: console |
| |
| $ brew install gdb |
| ... |
| ... |
| ==> Summary |
| 🍺 /usr/local/Cellar/gdb/7.10.1: XXX files,YYM |
| |
| **NOTE:** When running a program with gdb, you may need to sign your gdb |
| executable. `This |
| page <https://gcc.gnu.org/onlinedocs/gnat_ugn/Codesigning-the-Debugger.html>`__ |
| shows a recipe for gdb signing. Alternately you can skip this step and |
| continue without the ability to debug your mynewt application on your |
| PC.\* |
| |
| Setting Up the Toolchain for Linux |
| ---------------------------------- |
| |
| The below procedure can be used to set up a Debian-based Linux system |
| (e.g., Ubuntu). If you are running a different Linux distribution, you |
| will need to substitute invocations of *apt-get* in the below steps with |
| the package manager that your distro uses. |
| |
| Install gcc/libc that will produce 32-bit executables: |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| |
| .. code-block:: console |
| |
| $ sudo apt-get install gcc-multilib libc6-i386 |
| |
| Install gdb |
| ~~~~~~~~~~~ |
| |
| .. code-block:: console |
| |
| $ sudo apt-get install gdb |
| |
| Reading package lists... Done |
| Building dependency tree |
| Reading state information... Done |
| Suggested packages: |
| gdb-doc gdbserver |
| The following NEW packages will be installed: |
| gdb |
| ... |
| Processing triggers for man-db (2.6.7.1-1ubuntu1) ... |
| Setting up gdb (7.7.1-0ubuntu5~14.04.2) ... |
| |
| Next |
| ---- |
| |
| At this point you have installed all the necessary software to build and |
| run your first project on a simulator on your Mac OS or Linux computer. |
| You may proceed to :doc:`../project_create` or continue to the next section and install the cross tools for |
| ARM. |