Search Native Client webpages

# Native Client: README

Welcome to Native Client. This README file has the following sections:

- Documentation
- Directory structure

For the latest information about Native Client, see the Native Client project page.

## Documentation

The Native Client project contains the following documentation:

- How tos
  - Getting Started - A guide to running example modules and building your own
  - Building Native Client - How to build Native Client, including its demos and tests
  - Debugging Tips - How to debug your Native Client modules
    - nacl-gdb - How to use the debugger (Linux only)
- APIs
  - API Reference - Automatically generated reference documentation for APIs defined by Native Client; if the preceding link doesn't work, read the online API reference documentation
  - NPAPI Support - Information about which NPAPI functions are supported for use in Native Client modules
- And more
  - Examples and Tests - A guide to our sample Native Client modules
  - Native Client: A Sandbox for Portable, Untrusted x86 Native Code [PDF] - A research paper about the design, implementation, and evaluation of Native Client
  - Platform-specific details for Linux, Mac, and Windows.

## Directory structure

You can get Native Client in two ways:

- Download source code from the SVN repository, so you can keep up with the very latest changes. Once you have the source code, build it as described in Getting Started. (If those instructions are out of date, try the latest online instructions.)
- Download a tarball that includes pre-built binaries for Linux, Mac, or Windows. This is the easiest way to get started using Native Client, but the binaries are based on old source code. For information about what the current tarball contains and how to get started using it, go to http://code.google.com/p/nativeclient/ and click Documentation / README in the right column.

The following table describes major files and directories that you'll see in your working copy of the SVN repository, including some directories that don't exist until you've built Native Client. Paths are relative to the `native_client` directory.

File or directory | Description
--- | ---
    VERSION [PENDING: this file is currently AWOL]
    COPYING
    NOTICE
    README.html (this file)
    RELEASE_NOTES
    documentation/
| Documentation, release, and license information.
    SConstruct
    scons.bat
    scons
    scons-out/ (not in SVN)
    site_scons/ (not in SVN)
| Build-related files. The `scons.bat` and `scons` files, with data from `SConstruct`, let you build Native Client and its tests. The `scons-out` and `site-scons` directories don't exist in the SVN repository; they're created when Native Client is built. The `scons-out/*/staging` directories contain files, such as the Native Client plug-in and compiled examples, that let you use and test Native Client.
    src/
| Core source code for Native Client. `src/include/`: header files that are missing from some platforms and are used by more than one major part of Native Client `src/shared/`: source code that's used by both trusted code (such as the service runtime) and untrusted code (such as Native Client modules) `src/third_party/`: other people's source code `src/trusted/`: source code that's used only by trusted code `src/untrusted/`: source code that's used only by untrusted code
    tests/
    common/
| Source code for examples and tests.
    ../third_party/
| Third-party source code and binaries that aren't part of the service runtime. When built, the Native Client toolchain is in `src/third_party/nacl_sdk/`.
    tools/
| Utilities such as the plug-in installer.

Except as otherwise noted, the content of this page is licensed under a Creative Commons Attribution 2.5 license.