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