diff options
Diffstat (limited to 'docs/installation/build_unix_shlib.html')
-rw-r--r-- | docs/installation/build_unix_shlib.html | 205 |
1 files changed, 122 insertions, 83 deletions
diff --git a/docs/installation/build_unix_shlib.html b/docs/installation/build_unix_shlib.html index da9d5d92..8e3e64fb 100644 --- a/docs/installation/build_unix_shlib.html +++ b/docs/installation/build_unix_shlib.html @@ -14,7 +14,7 @@ <body> <div xmlns="" class="navheader"> <div class="libver"> - <p>Library Version 11.2.5.3</p> + <p>Library Version 12.1.6.1</p> </div> <table width="100%" summary="Navigation header"> <tr> @@ -22,9 +22,8 @@ </tr> <tr> <td width="20%" align="left"><a accesskey="p" href="build_unix_install.html">Prev</a> </td> - <th width="60%" align="center">Chapter 7. - Building Berkeley DB for UNIX/POSIX - </th> + <th width="60%" align="center">Chapter 7. Building Berkeley DB for UNIX/POSIX + </th> <td width="20%" align="right"> <a accesskey="n" href="build_unix_test.html">Next</a></td> </tr> </table> @@ -38,87 +37,125 @@ </div> </div> </div> - <p><span class="bold"><strong>Warning</strong></span>: the following information is intended to be generic and -is likely to be correct for most UNIX systems. Unfortunately, dynamic -shared libraries are not standard between UNIX systems, so there may be -information here that is not correct for your system. If you have -problems, consult your compiler and linker manual pages, or your system -administrator.</p> - <p>The Berkeley DB dynamic shared libraries are created with the name -libdb-<span class="bold"><strong>major</strong></span>.<span class="bold"><strong>minor</strong></span>.so, where <span class="bold"><strong>major</strong></span> is -the major version number and <span class="bold"><strong>minor</strong></span> is the minor version number. -Other shared libraries are created if Java and Tcl support are enabled: -specifically, libdb_java-<span class="bold"><strong>major</strong></span>.<span class="bold"><strong>minor</strong></span>.so -and libdb_tcl-<span class="bold"><strong>major</strong></span>.<span class="bold"><strong>minor</strong></span>.so.</p> - <p>On most UNIX systems, when any shared library is created, the linker -stamps it with a "SONAME". In the case of Berkeley DB, the SONAME -is libdb-<span class="bold"><strong>major</strong></span>.<span class="bold"><strong>minor</strong></span>.so. It is important to -realize that applications linked against a shared library remember the -SONAMEs of the libraries they use and not the underlying names in the -filesystem.</p> - <p>When the Berkeley DB shared library is installed, links are -created in the install lib directory so that -libdb-<span class="bold"><strong>major</strong></span>.<span class="bold"><strong>minor</strong></span>.so, -libdb-<span class="bold"><strong>major</strong></span>.so, and libdb.so all refer to the -same library. This library will have an SONAME of -libdb-<span class="bold"><strong>major</strong></span>.<span class="bold"><strong>minor</strong></span>.so.</p> - <p>Any previous versions of the Berkeley DB libraries that are -present in the install directory (such as libdb-2.7.so or -libdb-2.so) are left unchanged. (Removing or moving old shared -libraries is one drastic way to identify applications that have been -linked against those vintage releases.)</p> - <p>Once you have installed the Berkeley DB libraries, unless they are -installed in a directory where the linker normally looks for shared -libraries, you will need to specify the installation directory as part -of compiling and linking against Berkeley DB. Consult your system -manuals or system administrator for ways to specify a shared library -directory when compiling and linking applications with the -Berkeley DB libraries. Many systems support environment variables -(for example, LD_LIBRARY_PATH or LD_RUN_PATH), or system configuration -files (for example, /etc/ld.so.conf) for this purpose.</p> - <p><span class="bold"><strong>Warning</strong></span>: some UNIX installations may have an already existing -<code class="filename">/usr/lib/libdb.so</code>, and this library may be an incompatible -version of Berkeley DB.</p> - <p>We recommend that applications link against libdb.so (for example, -using -ldb). Even though the linker uses the file named -libdb.so, the executable file for the application remembers the -library's SONAME (libdb-<span class="bold"><strong>major</strong></span>.<span class="bold"><strong>minor</strong></span>.so). This -has the effect of marking the applications with the versions they need -at link time. Because applications locate their needed SONAMEs when -they are executed, all previously linked applications will continue to -run using the library they were linked with, even when a new version of -Berkeley DB is installed and the file <code class="filename">libdb.so</code> -is replaced with a new version.</p> - <p>Applications that know they are using features specific to a particular -Berkeley DB release can be linked to that release. For example, an -application wanting to link to Berkeley DB major release "3" can link -using -ldb-3, and applications that know about a particular -minor release number can specify both major and minor release numbers; -for example, -ldb-3.5.</p> - <p>If you want to link with Berkeley DB before performing library -installation, the "make" command will have created a shared library -object in the <code class="filename">.libs</code> subdirectory of the build directory, such -as <code class="filename">build_unix/.libs/libdb-major.minor.so</code>. If you want -to link a file against this library, with, for example, a major number -of "3" and a minor number of "5", you should be able to do something -like the following:</p> + <p> + <span class="bold"><strong>Warning</strong></span>: the following + information is intended to be generic and is likely to be + correct for most UNIX systems. Unfortunately, dynamic shared + libraries are not standard between UNIX systems, so there may + be information here that is not correct for your system. If + you have problems, consult your compiler and linker manual + pages, or your system administrator. + </p> + <p> + The Berkeley DB dynamic shared libraries are created with + the name libdb-<span class="bold"><strong>major</strong></span>.<span class="bold"><strong>minor</strong></span>. + so, where <span class="bold"><strong>major</strong></span> is the major version number and + <span class="bold"><strong>minor</strong></span> is the minor + version number. Other shared libraries are created if Java and + Tcl support are enabled: specifically, libdb_java-<span class="bold"><strong>major</strong></span>.<span class="bold"><strong>minor</strong></span>.so + and libdb_tcl-<span class="bold"><strong>major</strong></span>.<span class="bold"><strong>minor</strong></span>.so. + </p> + <p> + On most UNIX systems, when any shared library is created, + the linker stamps it with a "SONAME". In the case of Berkeley + DB, the SONAME is libdb-<span class="bold"><strong>major</strong></span>.<span class="bold"><strong>minor</strong></span>.so. + It is important to realize that applications linked against a shared + library remember the SONAMEs of the libraries they use and not the + underlying names in the filesystem. + </p> + <p> + When the Berkeley DB shared library is installed, links are + created in the install lib directory so that libdb-<span class="bold"><strong>major</strong></span>.<span class="bold"><strong>minor</strong></span>.so, + libdb-<span class="bold"><strong>major</strong></span>.so, and libdb.so all refer to the same + library. This library will have an SONAME of libdb-<span class="bold"><strong>major</strong></span>.<span class="bold"><strong>minor</strong></span>.so. + </p> + <p> + Any previous versions of the Berkeley DB libraries that are + present in the install directory (such as libdb-2.7.so or + libdb-2.so) are left unchanged. (Removing or moving old shared + libraries is one drastic way to identify applications that + have been linked against those vintage releases.) + </p> + <p> + Once you have installed the Berkeley DB libraries, unless + they are installed in a directory where the linker normally + looks for shared libraries, you will need to specify the + installation directory as part of compiling and linking + against Berkeley DB. Consult your system manuals or system + administrator for ways to specify a shared library directory + when compiling and linking applications with the Berkeley DB + libraries. Many systems support environment variables (for + example, LD_LIBRARY_PATH or LD_RUN_PATH), or system + configuration files (for example, /etc/ld.so.conf) for this + purpose. + </p> + <p> + <span class="bold"><strong>Warning</strong></span>: some UNIX + installations may have an already existing + <code class="filename">/usr/lib/libdb.so</code>, and this library + may be an incompatible version of Berkeley DB. + </p> + <p> + We recommend that applications link against libdb.so (for + example, using -ldb). Even though the linker uses the file + named libdb.so, the executable file for the application + remembers the library's SONAME + (libdb-<span class="bold"><strong>major</strong></span>.<span class="bold"><strong>minor</strong></span>.so). + This has the effect of marking the applications with the versions they + need at link time. Because applications locate their needed SONAMEs when they are + executed, all previously linked applications will continue to + run using the library they were linked with, even when a new + version of Berkeley DB is installed and the file + <code class="filename">libdb.so</code> is replaced with a new + version. + </p> + <p> + Applications that know they are using features specific to + a particular Berkeley DB release can be linked to that + release. For example, an application wanting to link to + Berkeley DB major release "3" can link using -ldb-3, and + applications that know about a particular minor release number + can specify both major and minor release numbers; for example, + -ldb-3.5. + </p> + <p> + If you want to link with Berkeley DB before performing + library installation, the "make" command will have created a + shared library object in the <code class="filename">.libs</code> + subdirectory of the build directory, such as + <code class="filename">build_unix/.libs/libdb-major.minor.so</code>. + If you want to link a file against this library, with, for + example, a major number of "3" and a minor number of "5", you + should be able to do something like the following: + </p> <pre class="programlisting">cc -L BUILD_DIRECTORY/.libs -o testprog testprog.o -ldb-3.5 env LD_LIBRARY_PATH="BUILD_DIRECTORY/.libs:$LD_LIBRARY_PATH" ./testprog</pre> - <p>where <span class="bold"><strong>BUILD_DIRECTORY</strong></span> is the full directory path to the directory -where you built Berkeley DB.</p> - <p>The libtool program (which is configured in the build directory) can be -used to set the shared library path and run a program. For example, -the following runs the gdb debugger on the db_dump utility after setting -the appropriate paths:</p> + <p> + where <span class="bold"><strong>BUILD_DIRECTORY</strong></span> is + the full directory path to the directory where you built + Berkeley DB. + </p> + <p> + The libtool program (which is configured in the build + directory) can be used to set the shared library path and run + a program. For example, the following runs the gdb debugger on + the db_dump utility after setting the appropriate paths: + </p> <pre class="programlisting">libtool gdb db_dump</pre> - <p>Libtool may not know what to do with arbitrary commands (it is hardwired -to recognize "gdb" and some other commands). If it complains the mode -argument will usually resolve the problem:</p> + <p> + Libtool may not know what to do with arbitrary commands (it + is hardwired to recognize "gdb" and some other commands). If + it complains the mode argument will usually resolve the + problem: + </p> <pre class="programlisting">libtool --mode=execute my_debugger db_dump</pre> - <p>On most systems, using libtool in this way is exactly equivalent to -setting the LD_LIBRARY_PATH environment variable and then executing the -program. On other systems, using libtool has the virtue of knowing about -any other details on systems that don't behave in this typical way.</p> + <p> + On most systems, using libtool in this way is exactly + equivalent to setting the LD_LIBRARY_PATH environment variable + and then executing the program. On other systems, using + libtool has the virtue of knowing about any other details on + systems that don't behave in this typical way. + </p> </div> <div class="navfooter"> <hr /> @@ -131,11 +168,13 @@ any other details on systems that don't behave in this typical way.</p> <td width="40%" align="right"> <a accesskey="n" href="build_unix_test.html">Next</a></td> </tr> <tr> - <td width="40%" align="left" valign="top">Installing Berkeley DB </td> + <td width="40%" align="left" valign="top">Installing Berkeley + DB </td> <td width="20%" align="center"> <a accesskey="h" href="index.html">Home</a> </td> - <td width="40%" align="right" valign="top"> Running the test suite under UNIX</td> + <td width="40%" align="right" valign="top"> Running the test suite under + UNIX</td> </tr> </table> </div> |