OLD | NEW |
1 {{+bindTo:partials.standard_nacl_article}} | 1 {{+bindTo:partials.standard_nacl_article}} |
2 | 2 |
3 <section id="building"> | 3 <section id="building"> |
4 <span id="devcycle-building"></span><h1 id="building"><span id="devcycle-buildin
g"></span>Building</h1> | 4 <span id="devcycle-building"></span><h1 id="building"><span id="devcycle-buildin
g"></span>Building</h1> |
5 <div class="contents local" id="table-of-contents" style="display: none"> | 5 <div class="contents local" id="table-of-contents" style="display: none"> |
6 <p class="topic-title first">Table Of Contents</p> | 6 <p class="topic-title first">Table Of Contents</p> |
7 <ul class="small-gap"> | 7 <ul class="small-gap"> |
8 <li><p class="first"><a class="reference internal" href="#introduction" id="id4"
>Introduction</a></p> | 8 <li><p class="first"><a class="reference internal" href="#introduction" id="id4"
>Introduction</a></p> |
9 <ul class="small-gap"> | 9 <ul class="small-gap"> |
10 <li><a class="reference internal" href="#target-architectures" id="id5">Target a
rchitectures</a></li> | 10 <li><a class="reference internal" href="#target-architectures" id="id5">Target a
rchitectures</a></li> |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
65 <a class="reference internal" href="/native-client/overview.html#application-fil
es"><em>manifest file</em></a> will then specify which version | 65 <a class="reference internal" href="/native-client/overview.html#application-fil
es"><em>manifest file</em></a> will then specify which version |
66 of the module to load based on the end-user’s architecture. The SDK | 66 of the module to load based on the end-user’s architecture. The SDK |
67 includes a script for generating manifest files called <code>create_nmf.py</code
>. This | 67 includes a script for generating manifest files called <code>create_nmf.py</code
>. This |
68 script is located in the <code>pepper_<version>/tools/</code> directory, m
eaning under | 68 script is located in the <code>pepper_<version>/tools/</code> directory, m
eaning under |
69 your installed pepper bundle. For examples of how to compile modules for | 69 your installed pepper bundle. For examples of how to compile modules for |
70 multiple target architectures and how to generate manifest files, see the | 70 multiple target architectures and how to generate manifest files, see the |
71 Makefiles included with the SDK examples.</p> | 71 Makefiles included with the SDK examples.</p> |
72 <p>This section will mostly cover PNaCl, but also describes how to build | 72 <p>This section will mostly cover PNaCl, but also describes how to build |
73 <strong>nexe</strong> applications.</p> | 73 <strong>nexe</strong> applications.</p> |
74 <h3 id="c-libraries">C libraries</h3> | 74 <h3 id="c-libraries">C libraries</h3> |
75 <p>The PNaCl SDK has a single choice of C library: <a class="reference external"
href="http://sourceware.org/newlib/">newlib</a>.</p> | 75 <p>The PNaCl toolchain uses the <a class="reference external" href="http://sourc
eware.org/newlib/">newlib</a> C library and can be used to build |
76 <p>The Native Client SDK also has a GCC-based toolchain for building | 76 portable <strong>pexe</strong> files (using <code>pnacl-clang</code>) or <strong
>nexe</strong> files (using, for |
77 <strong>nexes</strong>. The GCC-based toolchain has support for two C libraries: | 77 example, <code>x86_64-nacl-clang</code>). The Native Client SDK also has a |
78 <a class="reference external" href="http://sourceware.org/newlib/">newlib</a> an
d <a class="reference external" href="http://www.gnu.org/software/libc/">glibc</
a>. See <a class="reference internal" href="/native-client/devguide/devcycle/dy
namic-loading.html"><em>Dynamic Linking & Loading with glibc</em></a> for in
formation about these libraries, including factors to | 78 GCC-based toolchain for building <strong>nexe</strong> files which uses the <a c
lass="reference external" href="http://www.gnu.org/software/libc/">glibc</a> C l
ibrary. |
79 help you decide which to use.</p> | 79 See <a class="reference internal" href="/native-client/devguide/devcycle/dynamic
-loading.html"><em>Dynamic Linking & Loading with glibc</em></a> for |
| 80 information about these libraries, including factors to help you decide which to |
| 81 use.</p> |
80 <h3 id="c-standard-libraries"><span id="building-cpp-libraries"></span>C++ stand
ard libraries</h3> | 82 <h3 id="c-standard-libraries"><span id="building-cpp-libraries"></span>C++ stand
ard libraries</h3> |
81 <p>The PNaCl SDK can use either LLVM’s <a class="reference external" href=
"http://libcxx.llvm.org/">libc++</a> | 83 <p>The PNaCl SDK can use either LLVM’s <a class="reference external" href=
"http://libcxx.llvm.org/">libc++</a> |
82 (the current default) or GCC’s <a class="reference external" href="http://
gcc.gnu.org/libstdc++">libstdc++</a> (deprecated). The | 84 (the current default) or GCC’s <a class="reference external" href="http://
gcc.gnu.org/libstdc++">libstdc++</a> (deprecated). The |
83 <code>-stdlib=[libc++|libstdc++]</code> command line argument can be used to | 85 <code>-stdlib=[libc++|libstdc++]</code> command line argument can be used to |
84 choose which standard library to use.</p> | 86 choose which standard library to use.</p> |
85 <p>The GCC-based Native Client SDK only has support for GCC’s <a class="re
ference external" href="http://gcc.gnu.org/libstdc++">libstdc++</a>.</p> | 87 <p>The GCC-based toolchain only has support for GCC’s <a class="reference
external" href="http://gcc.gnu.org/libstdc++">libstdc++</a>.</p> |
86 <p>C++11 library support is only complete in libc++ but other non-library langua
ge | 88 <p>C++11 library support is only complete in libc++ but other non-library langua
ge |
87 features should work regardless of which standard library is used. The | 89 features should work regardless of which standard library is used. The |
88 <code>-std=gnu++11</code> command line argument can be used to indicate which C+
+ | 90 <code>-std=gnu++11</code> command line argument can be used to indicate which C+
+ |
89 language standard to use (<code>-std=c++11</code> often doesn’t work well
because newlib | 91 language standard to use (<code>-std=c++11</code> often doesn’t work well
because newlib |
90 relies on some GNU extensions).</p> | 92 relies on some GNU extensions).</p> |
91 <h3 id="sdk-toolchains">SDK toolchains</h3> | 93 <h3 id="sdk-toolchains">SDK toolchains</h3> |
92 <p>The Native Client SDK includes multiple toolchains. It has one PNaCl toolchai
n | 94 <p>The Native Client SDK includes multiple toolchains. It has one PNaCl toolchai
n |
93 and it has multiple GCC-based toolchains that are differentiated by target | 95 and it has multiple GCC-based toolchains that are differentiated by target |
94 architectures and C libraries. The single PNaCl toolchain is located | 96 architectures and C libraries. The single PNaCl toolchain is located |
95 in a directory named <code>pepper_<version>/toolchain/<OS_platform>_
pnacl</code>, | 97 in a directory named <code>pepper_<version>/toolchain/<OS_platform>_
pnacl</code>, |
(...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
361 <li><prefix>readelf</li> | 363 <li><prefix>readelf</li> |
362 <li><prefix>size</li> | 364 <li><prefix>size</li> |
363 <li><prefix>strings</li> | 365 <li><prefix>strings</li> |
364 <li><prefix>strip</li> | 366 <li><prefix>strip</li> |
365 </ul> | 367 </ul> |
366 <h3 id="compiling">Compiling</h3> | 368 <h3 id="compiling">Compiling</h3> |
367 <p>Compiling files with the GNU-based toolchain is similar to compiling | 369 <p>Compiling files with the GNU-based toolchain is similar to compiling |
368 files with the PNaCl-based toolchain, except that the output is | 370 files with the PNaCl-based toolchain, except that the output is |
369 architecture specific.</p> | 371 architecture specific.</p> |
370 <p>For example, assuming you’re developing on a Windows machine, targeting
the x86 | 372 <p>For example, assuming you’re developing on a Windows machine, targeting
the x86 |
371 architecture, and using the newlib library, you can compile a 32-bit <strong>.ne
xe</strong> | 373 architecture you can compile a 32-bit <strong>.nexe</strong> for the hello_world
example with |
372 for the hello_world example with the following command:</p> | 374 the following command:</p> |
373 <pre> | 375 <pre> |
374 nacl_sdk/pepper_<version>/toolchain/win_x86_newlib/bin/i686-nacl-gcc \ | 376 nacl_sdk/pepper_<version>/toolchain/win_x86_glibc/bin/i686-nacl-gcc \ |
375 hello_world.c -Inacl_sdk/pepper_<version>/include \ | 377 hello_world.c -Inacl_sdk/pepper_<version>/include \ |
376 -Lnacl_sdk/pepper_<version>/lib/newlib/Release -o hello_world_x86_32.nex
e \ | 378 -Lnacl_sdk/pepper_<version>/lib/glibc/Release -o hello_world_x86_32.nexe
\ |
377 -m32 -g -O2 -lppapi | 379 -m32 -g -O2 -lppapi |
378 </pre> | 380 </pre> |
379 <p>To compile a 64-bit <strong>.nexe</strong>, you can run the same command but
use -m64 instead | 381 <p>To compile a 64-bit <strong>.nexe</strong>, you can run the same command but
use -m64 instead |
380 of -m32. Alternatively, you could also use the version of the compiler that | 382 of -m32. Alternatively, you could also use the version of the compiler that |
381 targets the x86-64 architecture, i.e., <code>x86_64-nacl-gcc</code>.</p> | 383 targets the x86-64 architecture, i.e., <code>x86_64-nacl-gcc</code>.</p> |
382 <p>You should name executable modules with a <strong>.nexe</strong> filename ext
ension, | 384 <p>You should name executable modules with a <strong>.nexe</strong> filename ext
ension, |
383 regardless of what platform you’re using.</p> | 385 regardless of what platform you’re using.</p> |
384 <h3 id="creating-libraries-and-linking">Creating libraries and Linking</h3> | 386 <h3 id="creating-libraries-and-linking">Creating libraries and Linking</h3> |
385 <p>Creating libraries and linking with the GNU-based toolchain is similar | 387 <p>Creating libraries and linking with the GNU-based toolchain is similar |
386 to doing the same with the PNaCl toolchain. The relevant tools | 388 to doing the same with the PNaCl toolchain. The relevant tools |
387 for creating <strong>static</strong> libraries are <code><prefix>ar</code>
and <code><prefix>ranlib</code>. | 389 for creating <strong>static</strong> libraries are <code><prefix>ar</code>
and <code><prefix>ranlib</code>. |
388 Linking can be done with <code><prefix>g++</code>. See the | 390 Linking can be done with <code><prefix>g++</code>. See the |
389 <a class="reference internal" href="/native-client/devguide/devcycle/dynamic-loa
ding.html"><em>Dynamic Linking & Loading with glibc</em></a> | 391 <a class="reference internal" href="/native-client/devguide/devcycle/dynamic-loa
ding.html"><em>Dynamic Linking & Loading with glibc</em></a> |
390 section on how to create <strong>shared</strong> libraries.</p> | 392 section on how to create <strong>shared</strong> libraries.</p> |
391 <h3 id="finalizing-a-nexe-for-deployment">Finalizing a <strong>nexe</strong> for
deployment</h3> | 393 <h3 id="finalizing-a-nexe-for-deployment">Finalizing a <strong>nexe</strong> for
deployment</h3> |
392 <p>Unlike the PNaCl toolchain, no separate finalization step is required | 394 <p>Unlike the PNaCl toolchain, no separate finalization step is required |
393 for <strong>nexe</strong> files. The <strong>nexe</strong> files are always in a
<strong>stable</strong> format. | 395 for <strong>nexe</strong> files. The <strong>nexe</strong> files are always in a
<strong>stable</strong> format. |
394 However, the <strong>nexe</strong> file may contain debug information and symbol
information | 396 However, the <strong>nexe</strong> file may contain debug information and symbol
information |
395 which may make the <strong>nexe</strong> file larger than needed for distributio
n. | 397 which may make the <strong>nexe</strong> file larger than needed for distributio
n. |
396 To minimize the size of the distributed file, you can run the | 398 To minimize the size of the distributed file, you can run the |
397 <code><prefix>strip</code> tool to strip out debug information.</p> | 399 <code><prefix>strip</code> tool to strip out debug information.</p> |
398 <h2 id="using-make">Using make</h2> | 400 <h2 id="using-make">Using make</h2> |
399 <p>This document doesn’t cover how to use <code>make</code>, but if you wa
nt to use | 401 <p>This document doesn’t cover how to use <code>make</code>, but if you wa
nt to use |
400 <code>make</code> to build your Native Client module, you can base your Makefile
on the | 402 <code>make</code> to build your Native Client module, you can base your Makefile
on the |
401 ones in the SDK examples.</p> | 403 ones in the SDK examples.</p> |
402 <p>The Makefiles for the SDK examples build most of the examples in multiple | 404 <p>The Makefiles for the SDK examples build most of the examples in multiple |
403 configurations (using PNaCl vs NaCl, using different C libraries, | 405 configurations (using PNaCl vs NaCl, using different C libraries, |
404 targeting different architectures, and using different levels of optimization). | 406 targeting different architectures, and using different levels of optimization). |
405 To select a specific toolchain, set the <strong>environment variable</strong> | 407 To select a specific toolchain, set the <strong>environment variable</strong> |
406 <code>TOOLCHAIN</code> to either <code>pnacl</code>, <code>newlib</code>, <code>
glibc</code>, or <code>host</code>. | 408 <code>TOOLCHAIN</code> to either <code>pnacl</code>, <code>clang-newlib</code>,
<code>glibc</code>, or <code>host</code>. |
407 To select a specific level of optimization set the <strong>environment | 409 To select a specific level of optimization set the <strong>environment |
408 variable</strong> <code>CONFIG</code> to either <code>Debug</code>, or <code>Rel
ease</code>. Running | 410 variable</strong> <code>CONFIG</code> to either <code>Debug</code>, or <code>Rel
ease</code>. Running |
409 <code>make</code> in each example’s directory does <strong>one</strong> of
the following, | 411 <code>make</code> in each example’s directory does <strong>one</strong> of
the following, |
410 depending on the setting of the environment variables.</p> | 412 depending on the setting of the environment variables.</p> |
411 <ul class="small-gap"> | 413 <ul class="small-gap"> |
412 <li><p class="first">If <code>TOOLCHAIN=pnacl</code> creates a subdirectory call
ed <code>pnacl</code>;</p> | 414 <li><p class="first">If <code>TOOLCHAIN=pnacl</code> creates a subdirectory call
ed <code>pnacl</code>;</p> |
413 <ul class="small-gap"> | 415 <ul class="small-gap"> |
414 <li>builds a <strong>.pexe</strong> (architecture-independent Native Client exec
utable) using | 416 <li>builds a <strong>.pexe</strong> (architecture-independent Native Client exec
utable) using |
415 the newlib library</li> | 417 the newlib library</li> |
416 <li>generates a Native Client manifest (.nmf) file for the pnacl version of the | 418 <li>generates a Native Client manifest (.nmf) file for the pnacl version of the |
417 example</li> | 419 example</li> |
418 </ul> | 420 </ul> |
419 </li> | 421 </li> |
420 <li><p class="first">If <code>TOOLCHAIN=newlib</code> creates a subdirectory cal
led <code>newlib</code>;</p> | 422 <li><p class="first">If <code>TOOLCHAIN=clang-newlib</code> creates a subdirecto
ry called <code>clang-newlib</code>;</p> |
421 <ul class="small-gap"> | 423 <ul class="small-gap"> |
422 <li>builds <strong>.nexes</strong> for the x86-32, x86-64, and ARM architectures
using the | 424 <li>builds <strong>.nexes</strong> for the x86-32, x86-64, and ARM architectures
using the |
423 newlib library</li> | 425 nacl-clang toolchain and the newlib C library</li> |
424 <li>generates a Native Client manifest (.nmf) file for the newlib version of | 426 <li>generates a Native Client manifest (.nmf) file for the clang-newlib version |
425 the example</li> | 427 of the example</li> |
426 </ul> | 428 </ul> |
427 </li> | 429 </li> |
428 <li><p class="first">If <code>TOOLCHAIN=glibc</code> creates a subdirectory call
ed <code>glibc</code>;</p> | 430 <li><p class="first">If <code>TOOLCHAIN=glibc</code> creates a subdirectory call
ed <code>glibc</code>;</p> |
429 <ul class="small-gap"> | 431 <ul class="small-gap"> |
430 <li>builds <strong>.nexes</strong> for the x86-32 and x86-64 architectures using
the glibc | 432 <li>builds <strong>.nexes</strong> for the x86-32, x86-64 and ARM architectures
using the |
431 library</li> | 433 glibc library</li> |
432 <li>generates a Native Client manifest (.nmf) file for the glibc version of the | 434 <li>generates a Native Client manifest (.nmf) file for the glibc version of the |
433 example</li> | 435 example</li> |
434 </ul> | 436 </ul> |
435 </li> | 437 </li> |
436 <li><p class="first">If <code>TOOLCHAIN=host</code> creates a subdirectory calle
d <code>windows</code>, <code>linux</code>, | 438 <li><p class="first">If <code>TOOLCHAIN=host</code> creates a subdirectory calle
d <code>windows</code>, <code>linux</code>, |
437 or <code>mac</code> (depending on your development machine);</p> | 439 or <code>mac</code> (depending on your development machine);</p> |
438 <ul class="small-gap"> | 440 <ul class="small-gap"> |
439 <li>builds a Pepper plugin (.dll for Windows, .so for Linux/Mac) using the | 441 <li>builds a Pepper plugin (.dll for Windows, .so for Linux/Mac) using the |
440 hosted toolchain on your development machine</li> | 442 hosted toolchain on your development machine</li> |
441 <li>generates a Native Client manifest (.nmf) file for the host Pepper plugin | 443 <li>generates a Native Client manifest (.nmf) file for the host Pepper plugin |
(...skipping 24 matching lines...) Expand all Loading... |
466 libraries, such as libpthread and libc, plus the relevant header files. | 468 libraries, such as libpthread and libc, plus the relevant header files. |
467 The standard libraries are located under the <code>/pepper_<version></code
> directory | 469 The standard libraries are located under the <code>/pepper_<version></code
> directory |
468 in the following locations:</p> | 470 in the following locations:</p> |
469 <ul class="small-gap"> | 471 <ul class="small-gap"> |
470 <li>PNaCl toolchain: <code>toolchain/<platform>_pnacl/usr/lib</code></li> | 472 <li>PNaCl toolchain: <code>toolchain/<platform>_pnacl/usr/lib</code></li> |
471 <li>x86 toolchains: <code>toolchain/<platform>_x86_<c_library>/x86_6
4-nacl/lib32</code> and | 473 <li>x86 toolchains: <code>toolchain/<platform>_x86_<c_library>/x86_6
4-nacl/lib32</code> and |
472 <code>/lib64</code> (for the 32-bit and 64-bit target architectures, respectivel
y)</li> | 474 <code>/lib64</code> (for the 32-bit and 64-bit target architectures, respectivel
y)</li> |
473 <li>ARM toolchain: <code>toolchain/<platform>_arm_<c_library>/arm-na
cl/lib</code></li> | 475 <li>ARM toolchain: <code>toolchain/<platform>_arm_<c_library>/arm-na
cl/lib</code></li> |
474 </ul> | 476 </ul> |
475 <p>For example, on Windows, the libraries for the x86-64 architecture in the | 477 <p>For example, on Windows, the libraries for the x86-64 architecture in the |
476 newlib toolchain are in <code>toolchain/win_x86_newlib/x86_64-nacl/lib64</code>.
</p> | 478 glibc toolchain are in <code>toolchain/win_x86_glibc/x86_64-nacl/lib64</code>.</
p> |
477 <p>The header files are in:</p> | 479 <p>The header files are in:</p> |
478 <ul class="small-gap"> | 480 <ul class="small-gap"> |
479 <li>PNaCl toolchain: <code>toolchain/<platform>_pnacl/usr/include</code></
li> | 481 <li>PNaCl toolchain: <code>toolchain/<platform>_pnacl/le32-nacl/include</c
ode></li> |
480 <li>x86 toolchains: <code>toolchain/<platform>_x86_<c_library>/x86_6
4-nacl/include</code></li> | 482 <li>clang newlib toolchains: <code>toolchain/<platform>_pnacl/<arch>
-nacl/include</code></li> |
481 <li>ARM toolchain: <code>toolchain/<platform>_arm_<c_library>/arm-na
cl/include</code></li> | 483 <li>x86 glibc toolchain: <code>toolchain/<platform>_x86_glibc/x86_64-nacl/
include</code></li> |
| 484 <li>ARM glibc toolchain: <code>toolchain/<platform>_arm_glibc/arm-nacl/inc
lude</code></li> |
482 </ul> | 485 </ul> |
483 <p>Many other libraries have been ported for use with Native Client; for more | 486 <p>Many other libraries have been ported for use with Native Client; for more |
484 information, see the <a class="reference external" href="https://chromium.google
source.com/webports">webports</a> | 487 information, see the <a class="reference external" href="https://chromium.google
source.com/webports">webports</a> |
485 project. If you port an open-source library for your own use, we recommend | 488 project. If you port an open-source library for your own use, we recommend |
486 adding it to webports.</p> | 489 adding it to webports.</p> |
487 <p>Besides the standard libraries, the SDK includes Pepper libraries. | 490 <p>Besides the standard libraries, the SDK includes Pepper libraries. |
488 The PNaCl Pepper libraries are located in the the | 491 The PNaCl Pepper libraries are located in the the |
489 <code>nacl_sdk/pepper_<version>/lib/pnacl/<Release or Debug></code>
directory. | 492 <code>nacl_sdk/pepper_<version>/lib/pnacl/<Release or Debug></code>
directory. |
490 The GNU-based toolchain has Pepper libraries in | 493 The GNU-based toolchain has Pepper libraries in |
491 <code>nacl_sdk/pepper_<version>/lib/newlib_<arch>/<Release or Deb
ug></code> | 494 <code>nacl_sdk/pepper_<version>/lib/glibc_<arch>/<Release or Debu
g></code> |
492 and <code>nacl_sdk/pepper_<version>/lib/glibc_<arch>/<Release or
Debug></code>. | 495 and <code>nacl_sdk/pepper_<version>/lib/clang-newlib_<arch>/<Rele
ase or Debug></code>. |
493 The libraries provided by the SDK allow the application to use Pepper, | 496 The libraries provided by the SDK allow the application to use Pepper, |
494 as well as convenience libraries to simplify porting an application that | 497 as well as convenience libraries to simplify porting an application that |
495 uses POSIX functions. Here are descriptions of the Pepper libraries provided | 498 uses POSIX functions. Here are descriptions of the Pepper libraries provided |
496 in the SDK.</p> | 499 in the SDK.</p> |
497 <dl class="docutils" id="devcycle-building-nacl-io"> | 500 <dl class="docutils" id="devcycle-building-nacl-io"> |
498 <dt>libppapi.a</dt> | 501 <dt>libppapi.a</dt> |
499 <dd>Implements the Pepper (PPAPI) C interface. Needed for all applications that | 502 <dd>Implements the Pepper (PPAPI) C interface. Needed for all applications that |
500 use Pepper (even C++ applications).</dd> | 503 use Pepper (even C++ applications).</dd> |
501 <dt>libppapi_cpp.a</dt> | 504 <dt>libppapi_cpp.a</dt> |
502 <dd>Implements the Pepper (PPAPI) C++ interface. Needed by C++ applications that | 505 <dd>Implements the Pepper (PPAPI) C++ interface. Needed by C++ applications that |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
585 Function foo has disallowed type: i128 (i128) | 588 Function foo has disallowed type: i128 (i128) |
586 LLVM ERROR: PNaCl ABI verification failed | 589 LLVM ERROR: PNaCl ABI verification failed |
587 </pre> | 590 </pre> |
588 <p>When faced with a PNaCl ABI verification error, check the list of features | 591 <p>When faced with a PNaCl ABI verification error, check the list of features |
589 that are <a class="reference internal" href="/native-client/nacl-and-pnacl.html#
when-to-use-nacl"><em>not supported by PNaCl</em></a>. | 592 that are <a class="reference internal" href="/native-client/nacl-and-pnacl.html#
when-to-use-nacl"><em>not supported by PNaCl</em></a>. |
590 If the problem you face is not listed as restricted, | 593 If the problem you face is not listed as restricted, |
591 <a class="reference internal" href="/native-client/help.html#help"><em>let us kn
ow</em></a>!</p> | 594 <a class="reference internal" href="/native-client/help.html#help"><em>let us kn
ow</em></a>!</p> |
592 </section> | 595 </section> |
593 | 596 |
594 {{/partials.standard_nacl_article}} | 597 {{/partials.standard_nacl_article}} |
OLD | NEW |