Download the Native Client SDK
==============================
-To build Native Client modules, you must download and install the Native
-Client Software Development Kit (SDK). This page provides an overview
-of the Native Client SDK, and instructions for how to download and
-install the SDK.
+This page provides an overview of the Native Client SDK, and instructions for
+downloading and installing the SDK.
+
+.. raw:: html
+
+ <div id="home">
+ <a class="button-nacl button-download" href="http://storage.googleapis.com/nativeclient-mirror/nacl/nacl_sdk/nacl_sdk.zip">Download SDK Zip File</a>
+ </div>
+
+.. _sdk-overview:
Overview
--------
-The Native Client SDK includes the following:
-
-support for multiple Pepper versions
- The SDK contains **bundles** that let you compile Native Client modules
- using different versions of the
- :ref:`link_pepper` (e.g., Pepper 31 or Pepper Canary). Review the
- :doc:`Release Notes <release-notes>` for a description of the new features
- included in each Pepper version to help you decide which bundle to
- use to develop your application. In general, Native Client modules
- compiled using a particular Pepper version will work in
- corresponding versions of Chrome and higher. For example, a module
- compiled using the Pepper 31 bundle will work in Chrome 31 and
- higher.
-
-update utility
- The ``naclsdk`` utility (``naclsdk.bat`` on Windows) lets you download new
- bundles that are available, as well as new versions of existing bundles.
-
-toolchains
- Each platform includes three toolchains: one for compiling
- Portable Native Client (PNaCl) applications, one for compiling
- architecture-specific Native Client applications with newlib, and
- one for compiling architecture-specific Native Client applications with glibc.
- Newlib and glibc are two different implementations
- of the C standard library. All three toolchains contain
- Native Client-compatible versions of standard compilers, linkers,
- and other tools. See :doc:`NaCl and PNaCl </nacl-and-pnacl>` to help
- you choose the right toolchain.
-
-examples
- Each example in the SDK includes C or C++ source files and header files
- illustrating how to use NaCl and Pepper, along with a Makefile to build
- the example using each of the toolchains.
-
-tools
- The SDK includes a number of additional tools that you can use for
- tasks such as validating Native Client modules and running modules
- from the command line.
+The Native Client SDK includes:
+
+- **Support for multiple Pepper versions** to compile for specific minimum
+ versions of Chrome.
+- **Update utility** to download new bundles and updates to existing bundles.
+- **Toolchains** to compile for Portable Native Client (PNaCl), traditional
+ Native Client (NaCl), and for compiling architecture-specific Native Client
+ applications with glibc.
+- **Examples** Including C or C++ source files and header files illustrating
+ how to use NaCl and Pepper, and Makefiles to build the example with each of
+ the toolchains.
+- **Tools** for validating Native Client modules and running modules from the
+ command line.
Follow the steps below to download and install the Native Client SDK.
+.. _prerequisites:
+
Prerequisites
-------------
-* **Python:** Make sure you have Python 2.6 or 2.7 installed, and that the
- Python executable is in your path.
-
- * On Mac/Linux, Python is likely preinstalled. Run the command ``"python
- -V``" in a terminal window, and make sure that the version of Python you
- have is 2.6.x or 2.7.x (if it's not, upgrade to one of those versions).
- * On Windows, you may need to install Python. Go to
- `http://www.python.org/download/ <http://www.python.org/download/>`_ and
- select the latest 2.x version. In addition, be sure to add the Python
- directory (for example, ``C:\python27``) to the PATH `environment
- variable <http://en.wikipedia.org/wiki/Environment_variable>`_. After
- you've installed Python, run the command ``"python -V``" in a Command
- Prompt window and verify that the version of Python you have is 2.6.x or
- 2.7.x.
- * Note that Python 3.x is not yet supported.
-
-* **Make:** On the Mac, you need to install the ``make`` command on your system
- before you can build and run the examples in the SDK. One easy way to get
- ``make``, along with several other useful tools, is to install
- `Xcode Developer Tools <https://developer.apple.com/technologies/tools/>`_.
- After installing Xcode, go to the Preferences menu, select
- Downloads and Components, and verify that Command Line Tools are installed.
- If you'd rather not install Xcode, you can download and build an
- `open source version
- <http://mac.softpedia.com/dyn-postdownload.php?p=44632&t=4&i=1>`_ of
- ``make``. In order to build the command you may also need to download and
- install a copy of `gcc <https://github.com/kennethreitz/osx-gcc-installer>`_.
-
-Download and install the SDK
-----------------------------
-
-#. Download the SDK update utility: `nacl_sdk.zip
+.. _python26-27:
+
+Python 2.7
+^^^^^^^^^^^^^^^^^
+
+Make sure that the Python executable is in your ``PATH`` variable. Python 3.x is
+not yet supported.
+
+* On Mac and Linux, Python is likely preinstalled. Run the command ``python -V``
+ in a terminal window, and make sure that the version you have is 2.6.x or
+ 2.7.x.
+* On Windows, you may need to install Python. Go to `http://www.python.org/
+ download/ <http://www.python.org/download/>`_ and select the latest 2.x
+ version. In addition, be sure to add the Python directory (for example,
+ ``C:\python27``) to the ``PATH`` `environment variable <http://en.wikipedia.
+ org/wiki/Environment_variable>`_. Run ``python -V`` from a command line to
+ verify that you properly configured the PATH variable.
+
+.. _make:
+
+Make
+^^^^
+
+* On the Mac, you need to install ``make`` on your system before you can build
+ and run the examples in the SDK. One easy way to get ``make``, along with
+ several other useful tools, is to install `Xcode Developer Tools
+ <https://developer.apple.com/technologies/tools/>`_. After installing Xcode,
+ go to the XCode menu, open the Preferences dialog box then select Downloads
+ and Components. Verify that Command Line Tools are installed. If you'd rather
+ not install Xcode, you can download and build an `open source version
+ <http://mac.softpedia.com/dyn-postdownload.php?p=44632&t=4&i=1>`_ of ``make``.
+ To build the program you may also need to download and install `gcc
+ <https://github.com/kennethreitz/osx-gcc-installer>`_.
+* On Windows, the Native Client SDK includes a copy of GNU Make.
+
+.. _platforms:
+
+Platforms
+---------
+
+Native Client supports several operating systems, including Windows, Linux, OSX,
+and ChromeOS. It supports several architectures including on x86-32, x86-64,
+ARM, and MIPS.
+
+.. _versioning:
+
+Versions
+--------
+
+Chrome is released on a six week cycle, and developer versions of Chrome are
+pushed to the public beta channel three weeks before each release. As with any
+software, each release of Chrome may include changes to Native Client and the
+Pepper interfaces that may require modification to existing applications.
+However, modules compiled for one version of Pepper/Chrome should work with
+subsequent versions of Pepper/Chrome. The SDK includes multiple versions of the
+Pepper APIs to help developers make adjustments to API changes and take
+advantage of new features: `stable </native-client/pepper_stable>`_, `beta
+</native-client/pepper_beta>`_ and `dev </native-client/pepper_dev>`_.
+
+.. _installing-the-sdk:
+
+Installing the SDK
+------------------
+
+.. _downloading-and-unzipping:
+
+Downloading and Unzipping
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+#. Download the `SDK update zip file
<http://storage.googleapis.com/nativeclient-mirror/nacl/nacl_sdk/nacl_sdk.zip>`_.
-#. Unzip the SDK update utility:
+#. Unzip the file:
- * On Mac/Linux, run the command "``unzip nacl_sdk.zip``" in a terminal
+ * On Mac/Linux, run the command ``unzip nacl_sdk.zip`` in a terminal
window.
* On Windows, right-click on the .zip file and select "Extract All...". A
- dialog box will open; enter a location and click "Extract".
+ dialog box opens; enter a location and click "Extract".
- Unzipping the SDK update utility creates a directory called ``nacl_sdk`` with
- the following files and directories:
+ A directory is created called ``nacl_sdk`` with the following files and
+ directories:
- * ``naclsdk`` (and ``naclsdk.bat`` for Windows) --- the front end of the update
- utility, i.e., the command you run to download the latest bundles
+ * ``naclsdk`` (and ``naclsdk.bat`` for Windows) --- the update utility,
+ which is the command you run to download and update bundles.
* ``sdk_cache`` --- a directory with a manifest file that lists the bundles
- you have already downloaded
- * ``sdk_tools`` --- the back end of the update utility, also known as the
- "sdk_tools" bundle
+ you have already downloaded.
+ * ``sdk_tools`` --- the code run by the ``naclsdk`` command.
+
+.. _installing-the-stable-bundle:
+
+Installing the stable bundle
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-#. To see the SDK bundles that are available for download, go to the ``nacl_sdk``
- directory and run ``naclsdk`` with the ``"list"`` command.
- The SDK includes a separate bundle for each version of Chrome/Pepper.
+#. To see the SDK bundles that are available for download, go to the
+ ``nacl_sdk`` directory and run ``naclsdk`` with the ``list`` command. The SDK
+ includes a separate bundle for each version of Chrome/Pepper.
On Mac/Linux::
I sdk_tools (stable)
vs_addin (dev)
- pepper_27 (post_stable)
- pepper_28 (post_stable)
- pepper_29 (post_stable)
- pepper_30 (post_stable)
- pepper_31 (stable)
- pepper_32 (beta)
+ pepper_31 (post_stable)
+ pepper_32 (post_stable)
+ pepper_33 (post_stable)
+ pepper_34 (post_stable)
+ pepper_35 (stable)
+ pepper_36 (beta)
+ pepper_37 (dev)
pepper_canary (canary)
+ bionic_canary (canary)
+
+
+ The sample output above shows that several bundles are available for
+ download, and that you have already installed the latest revision of the
+ ``sdk_tools`` bundle, which was included in the zip file. You never need to
+ update the ``sdk_tools`` bundle. It is updated automatically (if necessary)
+ whenever you run ``naclsdk``.
+
+ Bundles are labeled post-stable, stable, beta, dev, or canary. These labels
+ usually correspond to the current versions of Chrome. We recommend that you
+ develop against a "stable" bundle, because such bundles can be used by all
+ current Chrome users. Native Client is designed to be backward-compatible.For
+ example, applications developed with the ``pepper_37`` bundle can run in
+ Chrome 37, Chrome 38, etc..
- The sample output above shows that there are a number of bundles available
- for download, and that you have already installed the latest revision of the
- ``sdk_tools`` bundle (it was included in the zip file you downloaded).
- Each bundle is labeled post-stable, stable, beta, dev, or canary.
- These labels usually correspond to the current versions of
- Chrome. (In the example above, Chrome 31 is stable, Chrome 32 is beta, etc.).
- We generally recommend that you download and use a "stable" bundle,
- as applications developed with "stable" bundles can be used by all current
- Chrome users. This is because Native Client is designed to be
- backward-compatible (for example, applications developed with the
- ``pepper_31`` bundle can run in Chrome 31, Chrome 32, etc.).
- Thus in the example above, ``pepper_31`` is the recommended bundle to use.
-
-#. Run ``naclsdk`` with the "update" command to download recommended bundles.
+#. Run ``naclsdk`` with the ``update`` command to download recommended bundles,
+ including the current "stable" bundle.
On Mac/Linux::
> naclsdk update
- By default, ``naclsdk`` only downloads bundles that are
- recommended---generally those that are "stable." Continuing with the earlier example, the
- "update" command would only download the ``pepper_31``
- bundle, since the bundles ``pepper_32`` and greater are not yet stable.
- If you want the ``pepper_32`` bundle, you must ask for it explicitly::
+ By default, ``naclsdk`` only downloads bundles that are recommended,
+ generally those that are "stable." For example, if the current "stable"
+ bundle is ``pepper_35``, then the ``update`` downloads that bundle. To
+ download the ``pepper_36`` bundle you must ask for it explicitly::
- $ ./naclsdk update pepper_32
+ $ ./naclsdk update pepper_36
+
+
- Note that you never need to update the ``sdk_tools`` bundle---it is
- updated automatically (if necessary) whenever you run ``naclsdk``.
+.. _updating-bundles:
-.. Note::
- :class: note
+Updating bundles
+----------------
- The minimum SDK bundle that supports PNaCl is ``pepper_31``.
-
-Staying up-to-date and getting new versions of bundles
-------------------------------------------------------
-
-#. Run ``naclsdk`` with the "list" command again; this will show you the list of
- available bundles and verify which bundles you have installed.
+#. Run ``naclsdk`` with the ``list`` command. This shows you the list of available
+ bundles and verifies which bundles you have installed.
On Mac/Linux::
On Windows::
> naclsdk list
-
- Continuing with the earlier example, if you previously downloaded the
- ``pepper_31`` bundle, you should see output similar to this::
-
- Bundles:
- I: installed
- *: update available
-
- I sdk_tools (stable)
- vs_addin (dev)
- pepper_27 (post_stable)
- pepper_28 (post_stable)
- pepper_29 (post_stable)
- pepper_30 (post_stable)
- I pepper_31 (stable)
- pepper_32 (beta)
- pepper_canary (canary)
-
-#. Running ``naclsdk`` with the "update" command again will verify that your
- bundles are up-to-date, or warn if you there are new versions of previously
- installed bundles.
-
- On Mac/Linux::
-
- $ ./naclsdk update
-
- On Windows::
-
- > naclsdk update
-
- Continuing with the earlier example, you should see output similar to this::
-
- pepper_31 is already up-to-date.
-
-#. To check if there is a new version of a previously installed bundle, you can
- run the "list" command again::
+
+ An asterisk (*) next to a bundle indicates that there is an update available
+ it. For example::
Bundles:
I: installed
I sdk_tools (stable)
vs_addin (dev)
- pepper_27 (post_stable)
- pepper_28 (post_stable)
- pepper_29 (post_stable)
- pepper_30 (post_stable)
- I* pepper_31 (stable)
- pepper_32 (beta)
+ pepper_31 (post_stable)
+ pepper_32 (post_stable)
+ pepper_33 (post_stable)
+ pepper_34 (post_stable)
+ I* pepper_35 (stable)
+ pepper_36 (beta)
+ pepper_37 (dev)
pepper_canary (canary)
+ bionic_canary (canary)
- An asterisk next to a bundle indicates that there is an update
- available for that bundle. If you run the "update" command now,
- ``naclsdk`` will warn you with a message similar to this::
+
+ If you run ``naclsdk update`` now, it warns you with a message similar to
+ this::
- WARNING: pepper_31 already exists, but has an update available.
- Run update with the --force option to overwrite the existing directory.
- Warning: This will overwrite any modifications you have made within this directory.
+ WARNING: pepper_35 already exists, but has an update available. Run update
+ with the --force option to overwrite the existing directory. Warning: This
+ will overwrite any modifications you have made within this directory.
- To dowload the new version of a bundle and overwrite the existing directory
- for that bundle, run ``naclsdk`` with the ``--force`` option.
+#. To download and install the new bundle, run:
On Mac/Linux::
> naclsdk update --force
+.. _help-with-the-naclsdk-utility:
+
+Help with the ``naclsdk`` utility
+---------------------------------
+
#. For more information about the ``naclsdk`` utility, run:
On Mac/Linux::
> naclsdk help
-Next steps:
+.. _next-steps:
+
+Next steps
+----------
-* Browse through the :doc:`Release Notes <release-notes>` for important
+* Browse the `Release Notes <release-notes>`_ for important
information about the SDK and new bundles.
-* If you're just getting started with Native Client, we recommend reading
- the :doc:`Technical Overview <../overview>` and walking through the
- :doc:`Getting Started Tutorial </devguide/tutorial/tutorial-part1>`.
-* If you'd rather dive into information about the toolchains, see
- :doc:`Building Native Client Modules </devguide/devcycle/building>`.
+* If you're just starting with Native Client, we recommend reading the
+ `Technical Overview <../overview>`_ and walking through the
+ `Getting Started Tutorial <devguide/tutorial/tutorial-part1>`_.
+* If you'd rather dive in, see
+ `Building Native Client Modules <devguide/devcycle/building>`_.