313 lines
4.3 KiB
HTML
313 lines
4.3 KiB
HTML
<HTML
|
|
><HEAD
|
|
><TITLE
|
|
>Program Library HOWTO</TITLE
|
|
><META
|
|
NAME="GENERATOR"
|
|
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
|
|
REL="NEXT"
|
|
TITLE="Introduction"
|
|
HREF="introduction.html"></HEAD
|
|
><BODY
|
|
CLASS="ARTICLE"
|
|
BGCOLOR="#FFFFFF"
|
|
TEXT="#000000"
|
|
LINK="#0000FF"
|
|
VLINK="#840084"
|
|
ALINK="#0000FF"
|
|
><DIV
|
|
CLASS="ARTICLE"
|
|
><DIV
|
|
CLASS="TITLEPAGE"
|
|
><H1
|
|
CLASS="TITLE"
|
|
><A
|
|
NAME="AEN2"
|
|
></A
|
|
>Program Library HOWTO</H1
|
|
><H3
|
|
CLASS="AUTHOR"
|
|
><A
|
|
NAME="AEN4"
|
|
>David A. Wheeler</A
|
|
></H3
|
|
><P
|
|
CLASS="PUBDATE"
|
|
>version 1.20, 11 April 2003<BR></P
|
|
><DIV
|
|
><DIV
|
|
CLASS="ABSTRACT"
|
|
><A
|
|
NAME="AEN10"
|
|
></A
|
|
><P
|
|
></P
|
|
><P
|
|
>This HOWTO for programmers
|
|
discusses how to create and use program libraries on Linux.
|
|
This includes static libraries, shared libraries, and
|
|
dynamically loaded libraries.</P
|
|
><P
|
|
></P
|
|
></DIV
|
|
></DIV
|
|
><HR></DIV
|
|
><DIV
|
|
CLASS="TOC"
|
|
><DL
|
|
><DT
|
|
><B
|
|
>Table of Contents</B
|
|
></DT
|
|
><DT
|
|
>1. <A
|
|
HREF="introduction.html"
|
|
>Introduction</A
|
|
></DT
|
|
><DT
|
|
>2. <A
|
|
HREF="static-libraries.html"
|
|
>Static Libraries</A
|
|
></DT
|
|
><DT
|
|
>3. <A
|
|
HREF="shared-libraries.html"
|
|
>Shared Libraries</A
|
|
></DT
|
|
><DD
|
|
><DL
|
|
><DT
|
|
>3.1. <A
|
|
HREF="shared-libraries.html#AEN46"
|
|
>Conventions</A
|
|
></DT
|
|
><DT
|
|
>3.2. <A
|
|
HREF="shared-libraries.html#AEN70"
|
|
>How Libraries are Used</A
|
|
></DT
|
|
><DT
|
|
>3.3. <A
|
|
HREF="shared-libraries.html#AEN77"
|
|
>Environment Variables</A
|
|
></DT
|
|
><DT
|
|
>3.4. <A
|
|
HREF="shared-libraries.html#AEN95"
|
|
>Creating a Shared Library</A
|
|
></DT
|
|
><DT
|
|
>3.5. <A
|
|
HREF="shared-libraries.html#AEN115"
|
|
>Installing and Using a Shared Library</A
|
|
></DT
|
|
><DT
|
|
>3.6. <A
|
|
HREF="shared-libraries.html#AEN135"
|
|
>Incompatible Libraries</A
|
|
></DT
|
|
></DL
|
|
></DD
|
|
><DT
|
|
>4. <A
|
|
HREF="dl-libraries.html"
|
|
>Dynamically Loaded (DL) Libraries</A
|
|
></DT
|
|
><DD
|
|
><DL
|
|
><DT
|
|
>4.1. <A
|
|
HREF="dl-libraries.html#DLOPEN"
|
|
>dlopen()</A
|
|
></DT
|
|
><DT
|
|
>4.2. <A
|
|
HREF="dl-libraries.html#DLERROR"
|
|
>dlerror()</A
|
|
></DT
|
|
><DT
|
|
>4.3. <A
|
|
HREF="dl-libraries.html#DLSYM"
|
|
>dlsym()</A
|
|
></DT
|
|
><DT
|
|
>4.4. <A
|
|
HREF="dl-libraries.html#DLCLOSE"
|
|
>dlclose()</A
|
|
></DT
|
|
><DT
|
|
>4.5. <A
|
|
HREF="dl-libraries.html#DL-LIBRARY-EXAMPLE"
|
|
>DL Library Example</A
|
|
></DT
|
|
></DL
|
|
></DD
|
|
><DT
|
|
>5. <A
|
|
HREF="miscellaneous.html"
|
|
>Miscellaneous</A
|
|
></DT
|
|
><DD
|
|
><DL
|
|
><DT
|
|
>5.1. <A
|
|
HREF="miscellaneous.html#NM"
|
|
>nm command</A
|
|
></DT
|
|
><DT
|
|
>5.2. <A
|
|
HREF="miscellaneous.html#INIT-AND-CLEANUP"
|
|
>Library constructor and destructor functions</A
|
|
></DT
|
|
><DT
|
|
>5.3. <A
|
|
HREF="miscellaneous.html#SHARED-SCRIPTS"
|
|
>Shared Libraries Can Be Scripts</A
|
|
></DT
|
|
><DT
|
|
>5.4. <A
|
|
HREF="miscellaneous.html#VERSION-SCRIPTS"
|
|
>Symbol Versioning and Version Scripts</A
|
|
></DT
|
|
><DT
|
|
>5.5. <A
|
|
HREF="miscellaneous.html#GNU-LIBTOOL"
|
|
>GNU libtool</A
|
|
></DT
|
|
><DT
|
|
>5.6. <A
|
|
HREF="miscellaneous.html#REMOVING-SYMBOLS"
|
|
>Removing symbols for space</A
|
|
></DT
|
|
><DT
|
|
>5.7. <A
|
|
HREF="miscellaneous.html#SMALL-EXECUTABLES"
|
|
>Extremely small executables</A
|
|
></DT
|
|
><DT
|
|
>5.8. <A
|
|
HREF="miscellaneous.html#CPP-VS-C"
|
|
>C++ vs. C</A
|
|
></DT
|
|
><DT
|
|
>5.9. <A
|
|
HREF="miscellaneous.html#SPEEDING-CPP-INIT"
|
|
>Speeding up C++ initialization</A
|
|
></DT
|
|
><DT
|
|
>5.10. <A
|
|
HREF="miscellaneous.html#LSB"
|
|
>Linux Standard Base (LSB)</A
|
|
></DT
|
|
></DL
|
|
></DD
|
|
><DT
|
|
>6. <A
|
|
HREF="more-examples.html"
|
|
>More Examples</A
|
|
></DT
|
|
><DD
|
|
><DL
|
|
><DT
|
|
>6.1. <A
|
|
HREF="more-examples.html#AEN280"
|
|
>File libhello.c</A
|
|
></DT
|
|
><DT
|
|
>6.2. <A
|
|
HREF="more-examples.html#AEN284"
|
|
>File libhello.h</A
|
|
></DT
|
|
><DT
|
|
>6.3. <A
|
|
HREF="more-examples.html#AEN288"
|
|
>File demo_use.c</A
|
|
></DT
|
|
><DT
|
|
>6.4. <A
|
|
HREF="more-examples.html#AEN292"
|
|
>File script_static</A
|
|
></DT
|
|
><DT
|
|
>6.5. <A
|
|
HREF="more-examples.html#AEN296"
|
|
>File script_shared</A
|
|
></DT
|
|
><DT
|
|
>6.6. <A
|
|
HREF="more-examples.html#AEN300"
|
|
>File demo_dynamic.c</A
|
|
></DT
|
|
><DT
|
|
>6.7. <A
|
|
HREF="more-examples.html#AEN304"
|
|
>File script_dynamic</A
|
|
></DT
|
|
></DL
|
|
></DD
|
|
><DT
|
|
>7. <A
|
|
HREF="info-sources.html"
|
|
>Other Information Sources</A
|
|
></DT
|
|
><DT
|
|
>8. <A
|
|
HREF="copyright.html"
|
|
>Copyright and License</A
|
|
></DT
|
|
></DL
|
|
></DIV
|
|
></DIV
|
|
><DIV
|
|
CLASS="NAVFOOTER"
|
|
><HR
|
|
ALIGN="LEFT"
|
|
WIDTH="100%"><TABLE
|
|
SUMMARY="Footer navigation table"
|
|
WIDTH="100%"
|
|
BORDER="0"
|
|
CELLPADDING="0"
|
|
CELLSPACING="0"
|
|
><TR
|
|
><TD
|
|
WIDTH="33%"
|
|
ALIGN="left"
|
|
VALIGN="top"
|
|
> </TD
|
|
><TD
|
|
WIDTH="34%"
|
|
ALIGN="center"
|
|
VALIGN="top"
|
|
> </TD
|
|
><TD
|
|
WIDTH="33%"
|
|
ALIGN="right"
|
|
VALIGN="top"
|
|
><A
|
|
HREF="introduction.html"
|
|
ACCESSKEY="N"
|
|
>Next</A
|
|
></TD
|
|
></TR
|
|
><TR
|
|
><TD
|
|
WIDTH="33%"
|
|
ALIGN="left"
|
|
VALIGN="top"
|
|
> </TD
|
|
><TD
|
|
WIDTH="34%"
|
|
ALIGN="center"
|
|
VALIGN="top"
|
|
> </TD
|
|
><TD
|
|
WIDTH="33%"
|
|
ALIGN="right"
|
|
VALIGN="top"
|
|
>Introduction</TD
|
|
></TR
|
|
></TABLE
|
|
></DIV
|
|
></BODY
|
|
></HTML
|
|
> |