blob: 1245ec65dcedf085b8e4f5cc3a2fb8849ee2be52 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Installing Native Toolchain &mdash; Apache Mynewt latest documentation</title>
<link rel="shortcut icon" href="../../_static/mynewt-logo-only-newt32x32.png"/>
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/sphinx_theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/bootstrap-3.0.3.min.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/v2.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/custom.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/restructuredtext.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/overrides.css" type="text/css" />
<link rel="index" title="Index"
href="../../genindex.html"/>
<link rel="search" title="Search" href="../../search.html"/>
<link rel="top" title="Apache Mynewt latest documentation" href="../../index.html"/>
<link rel="up" title="Native Installation" href="index.html"/>
<link rel="next" title="Installing the Cross Tools for ARM" href="cross_tools.html"/>
<link rel="prev" title="Installing Newt on Windows" href="../../newt/install/newt_windows.html"/>
<script src="../../_static/js/modernizr.min.js"></script>
<script>
(function(i, s, o, g, r, a, m) {
i["GoogleAnalyticsObject"] = r;
(i[r] =
i[r] ||
function() {
(i[r].q = i[r].q || []).push(arguments);
}),
(i[r].l = 1 * new Date());
(a = s.createElement(o)), (m = s.getElementsByTagName(o)[0]);
a.async = 1;
a.src = g;
m.parentNode.insertBefore(a, m);
})(window, document, "script", "//www.google-analytics.com/analytics.js", "ga");
ga("create", "UA-72162311-1", "auto");
ga("send", "pageview");
</script>
</head>
<body class="not-front page-documentation" role="document" >
<div id="wrapper">
<div class="container">
<div id="banner" class="row v2-main-banner">
<a class="logo-cell" href="/">
<img class="logo" src="../../_static/img/logo.png">
</a>
<div class="tagline-cell">
<h4 class="tagline">An OS to build, deploy and securely manage billions of devices</h4>
</div>
<div class="news-cell">
<div class="well">
<h4>Latest News:</h4> <a href="/download">Apache Mynewt 1.11.0, Apache NimBLE 1.6.0 </a> released September 7, 2023)
</div>
</div>
</div>
</div>
<header>
<nav id="navbar" class="navbar navbar-inverse" role="navigation">
<div class="container">
<!-- Collapsed navigation -->
<div class="navbar-header">
<!-- Expander button -->
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<!-- Expanded navigation -->
<div class="navbar-collapse collapse">
<!-- Main navigation -->
<ul class="nav navbar-nav navbar-right">
<li>
<a href="/"><i class="fa fa-home" style="font-size: larger;"></i></a>
</li>
<li class="important">
<a href="/quick-start/">Quick Start</a>
</li>
<li>
<a href="/about/">About</a>
</li>
<li>
<a href="/talks/">Talks</a>
</li>
<li class="active">
<a href="/documentation/">Documentation</a>
</li>
<li>
<a href="/download/">Download</a>
</li>
<li>
<a href="/community/">Community</a>
</li>
<li>
<a href="/events/">Events</a>
</li>
</ul>
<!-- Search, Navigation and Repo links -->
<ul class="nav navbar-nav navbar-right">
</ul>
</div>
</div>
</nav>
</header>
<!-- STARTS MAIN CONTENT -->
<div id="main-content">
<div id="breadcrumb">
<div class="container">
<a href="/documentation/">Docs</a> /
<a href="../index.html">Setup &amp; Get Started</a> /
<a href="index.html">Native Installation</a> /
Installing Native Toolchain
<div class="sourcelink">
<a href="https://github.com/apache/mynewt-documentation/edit/master/docs/get_started/native_install/native_tools.rst" class="icon icon-github"
rel="nofollow"> Edit on GitHub</a>
</div>
</div>
</div>
<!-- STARTS CONTAINER -->
<div class="container">
<!-- STARTS .content -->
<div id="content" class="row">
<!-- STARTS .container-sidebar -->
<div class="container-sidebar col-xs-12 col-sm-3">
<div id="docSidebar" class="sticky-container">
<div role="search" class="sphinx-search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="Search documentation" class="search-documentation" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
<!-- Note: only works when deployed -->
<select class="form-control" onchange="if (this.value) window.location.href=this.value">
<option value="/latest" selected>
Version: latest
</option>
<option value="/v1_11_0" >
Version: 1.11.0
</option>
<option value="/v1_10_0" >
Version: 1.10.0
</option>
<option value="/v1_9_0" >
Version: 1.9.0
</option>
<option value="/v1_8_0" >
Version: 1.8.0
</option>
<option value="/v1_7_0" >
Version: 1.7.0
</option>
<option value="/v1_6_0" >
Version: 1.6.0
</option>
<option value="/v1_5_0" selected="selected" >
Version: 1.5.0
</option>
<option value="/v1_4_0" >
Version: 1.4.0
</option>
<option value="/v1_3_0/os/introduction" >
Version: 1.3.0
</option>
<option value="/v1_2_0/os/introduction" >
Version: 1.2.0
</option>
<option value="/v1_1_0/os/introduction" >
Version: 1.1.0
</option>
<option value="/v1_0_0/os/introduction" >
Version: 1.0.0
</option>
<option value="/v0_9_0/os/introduction" >
Version: 0.9.0
</option>
</select>
<div class="region region-sidebar">
<div class="docs-menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../index.html">Introduction</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">Setup &amp; Get Started</a><ul class="current">
<li class="toctree-l2 current"><a class="reference internal" href="index.html">Native Installation</a><ul class="current">
<li class="toctree-l3"><a class="reference internal" href="../../newt/install/newt_mac.html">Installing Newt on Mac OS</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../newt/install/newt_linux.html">Installing Newt on Linux</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../newt/install/newt_windows.html">Installing Newt on Windows</a></li>
<li class="toctree-l3 current"><a class="current reference internal" href="#">Installing Native Toolchain</a></li>
<li class="toctree-l3"><a class="reference internal" href="cross_tools.html">Installing the Cross Tools for ARM</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../docker.html">Docker Container</a></li>
<li class="toctree-l2"><a class="reference internal" href="../project_create.html">Create Your First Project</a></li>
<li class="toctree-l2"><a class="reference internal" href="../serial_access.html">Serial Port Setup</a></li>
<li class="toctree-l2"><a class="reference internal" href="../debug.html">Debugging Mynewt</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../concepts.html">Concepts</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../tutorials/tutorials.html">Tutorials</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../external_links.html">Third-party Resources</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../os/os_user_guide.html">OS User Guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../network/index.html">BLE User Guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../newt/index.html">Newt Tool Guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../newtmgr/index.html">Newt Manager Guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../mynewt_faq/index.html">Mynewt FAQ</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../misc/index.html">Appendix</a></li>
</ul>
</div>
</div>
</div>
<!-- ENDS STICKY CONTAINER -->
</div>
<!-- ENDS .container-sidebar -->
<div class="col-xs-12 col-sm-9">
<div class="alert alert-warning">
<p>
Version 1.5.0 is not the most recent version of the
Apache Mynewt documentation. Click <a href="/latest">here</a> to
read the latest version.
</p>
</div>
<div class="">
<div class="rst-content">
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="installing-native-toolchain">
<h1>Installing Native Toolchain<a class="headerlink" href="#installing-native-toolchain" title="Permalink to this headline"></a></h1>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><p><a class="reference internal" href="#setting-up-the-toolchain-for-mac" id="id2">Setting Up the Toolchain for Mac</a></p>
<ul>
<li><p><a class="reference internal" href="#installing-brew" id="id3">Installing Brew</a></p></li>
<li><p><a class="reference internal" href="#installing-gcc-libc" id="id4">Installing GCC/libc</a></p></li>
<li><p><a class="reference internal" href="#installing-gdb" id="id5">Installing GDB</a></p></li>
</ul>
</li>
<li><p><a class="reference internal" href="#setting-up-the-toolchain-for-linux" id="id6">Setting Up the Toolchain for Linux</a></p>
<ul>
<li><p><a class="reference internal" href="#installing-gcc-libc-that-will-produce-32-bit-executables" id="id7">Installing GCC/libc that will produce 32-bit executables</a></p></li>
<li><p><a class="reference internal" href="#id1" id="id8">Installing GDB</a></p></li>
</ul>
</li>
<li><p><a class="reference internal" href="#next" id="id9">Next</a></p></li>
</ul>
</div>
<p>This page shows you how to install the toolchain to build Mynewt OS
applications that run native on macOS 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.</p>
<p><strong>Note:</strong> This is not supported on Windows.</p>
<div class="section" id="setting-up-the-toolchain-for-mac">
<h2><a class="toc-backref" href="#id2">Setting Up the Toolchain for Mac</a><a class="headerlink" href="#setting-up-the-toolchain-for-mac" title="Permalink to this headline"></a></h2>
<div class="section" id="installing-brew">
<h3><a class="toc-backref" href="#id3">Installing Brew</a><a class="headerlink" href="#installing-brew" title="Permalink to this headline"></a></h3>
<p>If you have not already installed Homebrew from the <code class="docutils literal notranslate"><span class="pre">newt</span></code> tutorials
pages install it (<a class="reference internal" href="../../newt/install/newt_mac.html"><span class="doc">Installing Newt on Mac OS</span></a>).</p>
</div>
<div class="section" id="installing-gcc-libc">
<h3><a class="toc-backref" href="#id4">Installing GCC/libc</a><a class="headerlink" href="#installing-gcc-libc" title="Permalink to this headline"></a></h3>
<p>Since macOS with Xcode ships with a C compiler called Clang there is no need to
install the other compiler. However, one can install gcc compiler with brew:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>brew<span class="w"> </span>install<span class="w"> </span>gcc
<span class="go">...</span>
<span class="go">...</span>
<span class="go">==&gt; Pouring gcc-10.2.0_2.big_sur.bottle.tar.gz</span>
<span class="go">🍺 /usr/local/Cellar/gcc/10.2.0_2: 1,455 files, 338.1MB</span>
</pre></div>
</div>
<p>Check the GCC version you have installed (either using <code class="docutils literal notranslate"><span class="pre">brew</span></code> or
previously installed). The brew-installed version can be checked using
<code class="docutils literal notranslate"><span class="pre">brew</span> <span class="pre">list</span> <span class="pre">gcc</span></code>. To use gcc instead of clang <code class="docutils literal notranslate"><span class="pre">&lt;mynewt-src-directory&gt;/repos/apache-mynewt-core/compiler/sim/compiler.yml</span></code>
file must be edited:</p>
<div class="highlight-yaml notranslate"><div class="highlight"><pre><span></span><span class="c1"># OS X.</span>
<span class="hll"><span class="nt">compiler.path.cc.DARWIN.OVERWRITE</span><span class="p">:</span><span class="w"> </span><span class="s">&quot;gcc&quot;</span>
</span><span class="hll"><span class="nt">compiler.path.as.DARWIN.OVERWRITE</span><span class="p">:</span><span class="w"> </span><span class="s">&quot;gcc&quot;</span>
</span><span class="nt">compiler.path.objdump.DARWIN.OVERWRITE</span><span class="p">:</span><span class="w"> </span><span class="s">&quot;gobjdump&quot;</span>
<span class="nt">compiler.path.objcopy.DARWIN.OVERWRITE</span><span class="p">:</span><span class="w"> </span><span class="s">&quot;gobjcopy&quot;</span>
<span class="nt">compiler.flags.base.DARWIN</span><span class="p">:</span><span class="w"> </span><span class="p p-Indicator">[</span><span class="nv">-DMN_OSX</span><span class="p p-Indicator">,</span><span class="w"> </span><span class="nv">-Wno-missing-braces</span><span class="p p-Indicator">]</span>
<span class="nt">compiler.ld.resolve_circular_deps.DARWIN.OVERWRITE</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">false</span>
</pre></div>
</div>
<p>…with the following:</p>
<div class="highlight-yaml notranslate"><div class="highlight"><pre><span></span><span class="nt">compiler.path.cc.DARWIN.OVERWRITE</span><span class="p">:</span><span class="w"> </span><span class="s">&quot;gcc-&lt;version&gt;&quot;</span>
<span class="nt">compiler.path.as.DARWIN.OVERWRITE</span><span class="p">:</span><span class="w"> </span><span class="s">&quot;gcc-&lt;version&gt;”</span>
</pre></div>
</div>
</div>
<div class="section" id="installing-gdb">
<h3><a class="toc-backref" href="#id5">Installing GDB</a><a class="headerlink" href="#installing-gdb" title="Permalink to this headline"></a></h3>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>brew<span class="w"> </span>install<span class="w"> </span>gdb
<span class="go">...</span>
<span class="go">...</span>
<span class="go">==&gt; Summary</span>
<span class="go">🍺 /usr/local/Cellar/gdb/7.10.1: XXX files,YYM</span>
</pre></div>
</div>
<p><strong>NOTE:</strong> When running a program with GDB, you may need to sign your <code class="docutils literal notranslate"><span class="pre">gdb</span></code>
executable. <a class="reference external" href="https://gcc.gnu.org/onlinedocs/gnat_ugn/Codesigning-the-Debugger.html">This
page</a>
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.*</p>
</div>
</div>
<div class="section" id="setting-up-the-toolchain-for-linux">
<h2><a class="toc-backref" href="#id6">Setting Up the Toolchain for Linux</a><a class="headerlink" href="#setting-up-the-toolchain-for-linux" title="Permalink to this headline"></a></h2>
<p>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 <em>apt-get</em> in the below steps with
the package manager that your distro uses.</p>
<div class="section" id="installing-gcc-libc-that-will-produce-32-bit-executables">
<h3><a class="toc-backref" href="#id7">Installing GCC/libc that will produce 32-bit executables</a><a class="headerlink" href="#installing-gcc-libc-that-will-produce-32-bit-executables" title="Permalink to this headline"></a></h3>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>sudo<span class="w"> </span>apt-get<span class="w"> </span>install<span class="w"> </span>gcc-multilib<span class="w"> </span>libc6-i386
</pre></div>
</div>
</div>
<div class="section" id="id1">
<h3><a class="toc-backref" href="#id8">Installing GDB</a><a class="headerlink" href="#id1" title="Permalink to this headline"></a></h3>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>sudo<span class="w"> </span>apt-get<span class="w"> </span>install<span class="w"> </span>gdb
<span class="go">Reading package lists... Done</span>
<span class="go">Building dependency tree</span>
<span class="go">Reading state information... Done</span>
<span class="go">Suggested packages:</span>
<span class="go"> gdb-doc gdbserver</span>
<span class="go">The following NEW packages will be installed:</span>
<span class="go"> gdb</span>
<span class="go">...</span>
<span class="go">Processing triggers for man-db (2.6.7.1-1ubuntu1) ...</span>
<span class="go">Setting up gdb (7.7.1-0ubuntu5~14.04.2) ...</span>
</pre></div>
</div>
</div>
</div>
<div class="section" id="next">
<h2><a class="toc-backref" href="#id9">Next</a><a class="headerlink" href="#next" title="Permalink to this headline"></a></h2>
<p>At this point you have installed all the necessary software to build and
run your first project on a simulator on your macOS or Linux computer.
You may proceed to <a class="reference internal" href="../project_create.html"><span class="doc">Creating Your First Mynewt Project</span></a> or continue to the next section and install the cross tools for
ARM.</p>
</div>
</div>
</div>
</div>
<div class="rst-footer-buttons row" role="navigation" aria-label="footer navigation">
<a href="cross_tools.html" class="btn btn-neutral float-right" title="Installing the Cross Tools for ARM" accesskey="n">Next: Installing the Cross Tools for ARM <span class="fa fa-arrow-circle-right"></span></a>
<a href="../../newt/install/newt_windows.html" class="btn btn-neutral" title="Installing Newt on Windows" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous: Installing Newt on Windows</a>
</div>
</div>
</div>
</div>
<!-- ENDS CONTENT SECTION -->
</div>
<!-- ENDS .content -->
</div>
</div>
<footer>
<div class="container">
<div class="row">
<div class="col-xs-12">
<p class="copyright">Apache Mynewt is available under Apache License, version 2.0.</p>
</div>
<div class="col-xs-12">
<div class="logos">
<img src="../../_static/img/asf_logo_wide_small.png" alt="Apache" title="Apache">
<small class="footnote">
Apache Mynewt, Mynewt, Apache, the Apache feather logo, and the Apache Mynewt project logo are either
registered trademarks or trademarks of the Apache Software Foundation in the United States and other countries.
</small>
<a href="">
<img src="../../_static/img/add_to_slack.png" alt="Slack Icon" title="Join our Slack Community" />
</a>
</div>
</div>
</div>
</div>
</footer>
</div>
<!-- ENDS #wrapper -->
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'../../',
VERSION:'latest',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: true,
SOURCELINK_SUFFIX: '.txt',
LINK_SUFFIX: '.html'
};
</script>
<script type="text/javascript" src="../../_static/jquery.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
<script type="text/javascript" src="../../_static/js/bootstrap-3.0.3.min.js"></script>
<script type="text/javascript" src="../../_static/js/affix.js"></script>
<script type="text/javascript" src="../../_static/js/main.js"></script>
</body>
</html>