Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(38)

Side by Side Diff: native_client_sdk/src/doc/devguide/devcycle/dynamic-loading.rst

Issue 511963004: Rearrange tables so that navigation can be added back to certain pages. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix items from review. Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 ###################################### 1 ######################################
2 Dynamic Linking and Loading with glibc 2 Dynamic Linking and Loading with glibc
3 ###################################### 3 ######################################
4 4
5 .. contents:: 5 .. contents::
6 :local: 6 :local:
7 :backlinks: none 7 :backlinks: none
8 :depth: 2 8 :depth: 2
9 9
10 Introduction
11 ============
12
13 .. Note:: 10 .. Note::
14 :class: caution 11 :class: caution
15 12
16 Portable Native Client currently only supports static linking, and the 13 Portable Native Client currently only supports static linking, and the
17 only C library available for it is newlib. This page is only valid for 14 only C library available for it is newlib. This page is only valid for
18 Native Client, though PNaCl will eventually support some form of 15 Native Client, though PNaCl will eventually support some form of
19 dynamic linking. 16 dynamic linking.
20 17
21 This document describes how to create and deploy dynamically linked and loaded 18 This document describes how to create and deploy dynamically linked and loaded
22 applications with the glibc library in the Native Client SDK. Before reading 19 applications with the glibc library in the Native Client SDK. Before reading
23 this document, we recommend reading :doc:`Building Native Client Modules 20 this document, we recommend reading :doc:`Building Native Client Modules
24 <building>` 21 <building>`
25 22
26 .. _c_libraries: 23 .. _c_libraries:
27 24
28 C standard libraries: glibc and newlib 25 C standard libraries: glibc and newlib
29 -------------------------------------- 26 --------------------------------------
30 27
31 The Native Client SDK comes with two C standard libraries --- glibc and 28 The Native Client SDK comes with two C standard libraries --- glibc and
32 newlib. These libraries are described in the table below. 29 newlib. These libraries are described in the table below.
33 30
34 +--------+----------+-------------+--------------------------------------------+ 31 +-----------------------------------------------------+----------+-------------+
35 | Library| Linking | License | Description | 32 | Library | Linking | License |
36 +========+==========+=============+============================================+ 33 +=====================================================+==========+=============+
37 | glibc | dynamic | GNU Lesser | glibc is the GNU implementation of the | 34 |glibc | dynamic | GNU Lesser |
38 | | or static| General | POSIX_ standard runtime library for the C | 35 | The GNU implementation of the POSIX_ standard | or static| General |
39 | | | Public | programming language. Designed for | 36 | runtime library for the C programming language. | | Public |
40 | | | License | portability and performance, glibc is one | 37 | Designed for portability and performance, glibc is | | License |
41 | | | (LGPL) | of the most popular implementations of the | 38 | one of the most popular implementations of the C | | (LGPL) |
42 | | | | C library. It is comprised of a set of | 39 | library. It is comprised of a set of interdependent| | |
43 | | | | interdependent libraries including libc, | 40 | libraries including libc, libpthreads, libdl, and | | |
44 | | | | libpthreads, libdl, and others. For | 41 | others. For documentation, FAQs, and additional | | |
45 | | | | documentation, FAQs, and additional | 42 | information about glibc, see GLIBC_. | | |
46 | | | | information about glibc, see GLIBC_ | 43 +-----------------------------------------------------+----------+-------------+
47 +--------+----------+-------------+--------------------------------------------+ 44 |newlib | static | Berkeley |
48 | newlib | static | Berkeley | newlib is a C library intended for use in | 45 | newlib is a C library intended for use in embedded | | Software |
49 | | | Software | embedded systems. Like glibc, newlib is a | 46 | systems. Like glibc, newlib is a conglomeration of | | Distribution|
50 | | | Distribution| conglomeration of several library parts. | 47 | several libraries. It is available for use under | | (BSD) type |
51 | | | (BSD) type | It is available for use under BSD-type free| 48 | BSD-type free software licenses, which generally | | free |
52 | | | free | software licenses, which generally makes it| 49 | makes it more suitable to link statically in | | software |
53 | | | software | more suitable to link statically in | 50 | commercial, closed-source applications. For | | licenses |
54 | | | licenses | commercial, closed-source applications. For| 51 | documentation, FAQs, and additional information | | |
55 | | | | documentation, FAQs, and additional | 52 | about newlib, see newlib_. | | |
56 | | | | information about newlib, see the newlib_ | 53 +-----------------------------------------------------+----------+-------------+
57 | | | | documentation. | 54
58 +--------+----------+-------------+--------------------------------------------+
59 55
60 For proprietary (closed-source) applications, your options are to either 56 For proprietary (closed-source) applications, your options are to either
61 statically link to newlib, or dynamically link to glibc. We recommend 57 statically link to newlib, or dynamically link to glibc. We recommend
62 dynamically linking to glibc, for a couple of reasons: 58 dynamically linking to glibc, for a couple of reasons:
63 59
64 * The glibc library is widely distributed (it's included in Linux 60 * The glibc library is widely distributed (it's included in Linux
65 distributions), and as such it's mature, hardened, and feature-rich. Your 61 distributions), and as such it's mature, hardened, and feature-rich. Your
66 code is more likely to compile out-of-the-box with glibc. 62 code is more likely to compile out-of-the-box with glibc.
67 63
68 * Dynamic loading can provide a big performance benefit for your application if 64 * Dynamic loading can provide a big performance benefit for your application if
(...skipping 362 matching lines...) Expand 10 before | Expand all | Expand 10 after
431 **undefined reference to 'dlopen' collect2: ld returned 1 exit status** 427 **undefined reference to 'dlopen' collect2: ld returned 1 exit status**
432 This is a linker ordering problem that usually results from improper ordering 428 This is a linker ordering problem that usually results from improper ordering
433 of command line flags when linking. Reconfigure your command line string to 429 of command line flags when linking. Reconfigure your command line string to
434 list libraries after the -o flag. 430 list libraries after the -o flag.
435 431
436 .. |menu-icon| image:: /images/menu-icon.png 432 .. |menu-icon| image:: /images/menu-icon.png
437 .. _objdump: http://en.wikipedia.org/wiki/Objdump 433 .. _objdump: http://en.wikipedia.org/wiki/Objdump
438 .. _GLIBC: http://www.gnu.org/software/libc/index.html 434 .. _GLIBC: http://www.gnu.org/software/libc/index.html
439 .. _POSIX: http://en.wikipedia.org/wiki/POSIX 435 .. _POSIX: http://en.wikipedia.org/wiki/POSIX
440 .. _newlib: http://sourceware.org/newlib/ 436 .. _newlib: http://sourceware.org/newlib/
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698