<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 >