• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1.. _download:
2
3Download the Native Client SDK
4==============================
5
6This page provides an overview of the Native Client SDK, and instructions for
7downloading and installing the SDK.
8
9.. raw:: html
10
11  <div id="home">
12  <a class="button-nacl button-download" href="http://storage.googleapis.com/nativeclient-mirror/nacl/nacl_sdk/nacl_sdk.zip">Download SDK Zip File</a>
13  </div>
14
15.. _sdk-overview:
16
17Overview
18--------
19
20The Native Client SDK includes:
21
22- **Support for multiple Pepper versions** to compile for specific minimum
23  versions of Chrome.
24- **Update utility** to download new bundles and updates to existing bundles.
25- **Toolchains** to compile for Portable Native Client (PNaCl), traditional
26  Native Client (NaCl), and for compiling architecture-specific Native Client
27  applications with glibc.
28- **Examples** Including C or C++ source files and header files illustrating
29  how to use NaCl and Pepper, and Makefiles to build the example with each of
30  the toolchains.
31- **Tools** for validating Native Client modules and running modules from the
32  command line.
33
34Follow the steps below to download and install the Native Client SDK.
35
36.. _prerequisites:
37
38Prerequisites
39-------------
40
41.. _python26-27:
42
43Python 2.7
44^^^^^^^^^^^^^^^^^
45
46Make sure that the Python executable is in your ``PATH`` variable. Python 3.x is
47not yet supported.
48
49* On Mac and Linux, Python is likely preinstalled. Run the command ``python -V``
50  in a terminal window, and make sure that the version you have is 2.6.x or
51  2.7.x.
52* On Windows, you may need to install Python. Go to `http://www.python.org/
53  download/ <http://www.python.org/download/>`_ and select the latest 2.x
54  version. In addition, be sure to add the Python directory (for example,
55  ``C:\python27``) to the ``PATH`` `environment variable <http://en.wikipedia.
56  org/wiki/Environment_variable>`_. Run ``python -V`` from a command line to
57  verify that you properly configured the PATH variable.
58
59.. _make:
60
61Make
62^^^^
63
64* On the Mac, you need to install ``make`` on your system before you can build
65  and run the examples in the SDK. One easy way to get ``make``, along with
66  several other useful tools, is to install `Xcode Developer Tools
67  <https://developer.apple.com/technologies/tools/>`_. After installing Xcode,
68  go to the XCode menu, open the Preferences dialog box then select Downloads
69  and Components. Verify that Command Line Tools are installed. If you'd rather
70  not install Xcode, you can download and build an `open source version
71  <http://mac.softpedia.com/dyn-postdownload.php?p=44632&t=4&i=1>`_ of ``make``.
72  To build the program you may also need to download and install `gcc
73  <https://github.com/kennethreitz/osx-gcc-installer>`_.
74* On Windows, the Native Client SDK includes a copy of GNU Make.
75
76.. _versioning:
77
78Versioning
79----------
80
81Chrome is released on a six week cycle, and developer versions of Chrome are
82pushed to the public beta channel three weeks before each release. As with any
83software, each release of Chrome may include changes to Native Client and the
84Pepper interfaces that may require modification to existing applications.
85However, modules compiled for one version of Pepper/Chrome should work with
86subsequent versions of Pepper/Chrome. The SDK includes multiple versions of the
87Pepper APIs to help developers make adjustments to API changes and take
88advantage of new features: `stable </native-client/pepper_stable>`_, `beta
89</native-client/pepper_beta>`_ and `dev </native-client/pepper_dev>`_.
90
91.. _installing-the-sdk:
92
93Installing the SDK
94------------------
95
96.. _downloading-and-unzipping:
97
98Downloading and Unzipping
99^^^^^^^^^^^^^^^^^^^^^^^^^
100
101#. Download the `SDK update zip file
102   <http://storage.googleapis.com/nativeclient-mirror/nacl/nacl_sdk/nacl_sdk.zip>`_.
103
104#. Unzip the file:
105
106   * On Mac/Linux, run the command ``unzip nacl_sdk.zip`` in a terminal
107     window.
108   * On Windows, right-click on the .zip file and select "Extract All...". A
109     dialog box opens; enter a location and click "Extract".
110
111   A directory is created called ``nacl_sdk`` with the following files and
112   directories:
113
114   * ``naclsdk`` (and ``naclsdk.bat`` for Windows) --- the update utility,
115     which is the command you run to download and update bundles.
116   * ``sdk_cache`` --- a directory with a manifest file that lists the bundles
117     you have already downloaded.
118   * ``sdk_tools`` --- the code run by the ``naclsdk`` command.
119
120.. _installing-the-stable-bundle:
121
122Installing the stable bundle
123^^^^^^^^^^^^^^^^^^^^^^^^^^^^
124
125#. To see the SDK bundles that are available for download, go to the
126   ``nacl_sdk`` directory and run ``naclsdk`` with the ``list`` command. The SDK
127   includes a separate bundle for each version of Chrome/Pepper.
128
129   On Mac/Linux::
130
131     $ cd nacl_sdk
132     $ ./naclsdk list
133
134   On Windows::
135
136     > cd nacl_sdk
137     > naclsdk list
138
139   You should see output similar to this::
140
141    Bundles:
142     I: installed
143     *: update available
144
145      I  sdk_tools (stable)
146         vs_addin (dev)
147         pepper_31 (post_stable)
148         pepper_32 (post_stable)
149         pepper_33 (post_stable)
150         pepper_34 (post_stable)
151         pepper_35 (stable)
152         pepper_36 (beta)
153         pepper_37 (dev)
154         pepper_canary (canary)
155         bionic_canary (canary)
156
157
158   The sample output above shows that several bundles are available for
159   download, and that you have already installed the latest revision of the
160   ``sdk_tools`` bundle, which was included in the zip file. You never need to
161   update the ``sdk_tools`` bundle. It is updated automatically (if necessary)
162   whenever you run ``naclsdk``.
163
164   Bundles are labeled post-stable, stable, beta, dev, or canary. These labels
165   usually correspond to the current versions of Chrome. We recommend that you
166   develop against a "stable" bundle, because such bundles can be used by all
167   current Chrome users. Native Client is designed to be backward-compatible.For
168   example, applications developed with the ``pepper_31`` bundle can run in
169   Chrome 31, Chrome 32, etc..
170
171#. Run ``naclsdk`` with the ``update`` command to download recommended bundles,
172   including the current "stable" bundle.
173
174   On Mac/Linux::
175
176     $ ./naclsdk update
177
178   On Windows::
179
180     > naclsdk update
181
182   By default, ``naclsdk`` only downloads bundles that are recommended,
183   generally those that are "stable." For example, if the current "stable"
184   bundle is ``pepper_35``, then the ``update`` downloads that bundle. To
185   download the ``pepper_36`` bundle you must ask for it explicitly::
186
187     $ ./naclsdk update pepper_36
188
189
190
191.. _updating-bundles:
192
193Updating bundles
194----------------
195
196#. Run ``naclsdk`` with the ``list`` command. This shows you the list of available
197   bundles and verifies which bundles you have installed.
198
199   On Mac/Linux::
200
201     $ ./naclsdk list
202
203   On Windows::
204
205     > naclsdk list
206
207   An asterisk (*) next to a bundle indicates that there is an update available
208   it. For example::
209
210    Bundles:
211     I: installed
212     *: update available
213
214      I  sdk_tools (stable)
215         vs_addin (dev)
216         pepper_31 (post_stable)
217         pepper_32 (post_stable)
218         pepper_33 (post_stable)
219         pepper_34 (post_stable)
220      I* pepper_35 (stable)
221         pepper_36 (beta)
222         pepper_37 (dev)
223         pepper_canary (canary)
224         bionic_canary (canary)
225
226
227   If you run ``naclsdk update`` now, it warns you with a message similar to
228   this::
229
230     WARNING: pepper_35 already exists, but has an update available. Run update
231     with the --force option to overwrite the existing directory. Warning: This
232     will overwrite any modifications you have made within this directory.
233
234#. To download and install the new bundle, run:
235
236   On Mac/Linux::
237
238     $ ./naclsdk update --force
239
240   On Windows::
241
242     > naclsdk update --force
243
244.. _help-with-the-naclsdk-utility:
245
246Help with the ``naclsdk`` utility
247---------------------------------
248
249#. For more information about the ``naclsdk`` utility, run:
250
251   On Mac/Linux::
252
253     $ ./naclsdk help
254
255   On Windows::
256
257     > naclsdk help
258
259.. _next-steps:
260
261Next steps
262----------
263
264* Browse the `Release Notes <release-notes>`_ for important
265  information about the SDK and new bundles.
266* If you're just starting with Native Client, we recommend reading the
267  `Technical Overview <../overview>`_ and walking through the
268  `Getting Started Tutorial <devguide/tutorial/tutorial-part1>`_.
269* If you'd rather dive in, see
270  `Building Native Client Modules <devguide/devcycle/building>`_.
271