1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
|
<!--$Id: solaris.html,v 1.1.1.1 2003/11/20 22:14:11 toshok Exp $-->
<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
<!--All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
<title>Berkeley DB Reference Guide: Solaris</title>
<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
</head>
<body bgcolor=white>
<a name="2"><!--meow--></a>
<table width="100%"><tr valign=top>
<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Building Berkeley DB for UNIX systems</dl></h3></td>
<td align=right><a href="../../ref/build_unix/sco.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/build_unix/sunos.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
<p>
<h1 align=center>Solaris</h1>
<p><ol>
<p><li><b>I can't compile and run multithreaded applications.</b>
<p>Special compile-time flags and additional libraries are required when
compiling threaded applications on Solaris. If you are compiling a
threaded application, you must compile with the D_REENTRANT flag and link
with the libpthread.a or libthread.a libraries:
<p><blockquote><pre>cc -mt ...
cc -D_REENTRANT ... -lthread
cc -D_REENTRANT ... -lpthread</pre></blockquote>
<p>The Berkeley DB library will automatically build with the correct options.
<hr size=1 noshade>
<p><li><b>I've installed gcc on my Solaris system, but configuration
fails because the compiler doesn't work.</b>
<p>On some versions of Solaris, there is a cc executable in the user's path,
but all it does is display an error message and fail:
<p><blockquote><pre>% which cc
/usr/ucb/cc
% cc
/usr/ucb/cc: language optional software package not installed</pre></blockquote>
<p>Because Berkeley DB always uses the native compiler in preference to gcc, this
is a fatal error. If the error message you are seeing is the following,
then this may be the problem:
<p><blockquote><pre>checking whether the C compiler (cc -O) works... no
configure: error: installation or configuration problem: C compiler cannot create executables.</pre></blockquote>
<p>The simplest workaround is to set your CC environment variable to the
system compiler and reconfigure; for example:
<p><blockquote><pre>env CC=gcc ../dist/configure</pre></blockquote>
<p>If you are using the --configure-cxx option, you may also want to specify
a C++ compiler, for example the following:
<p><blockquote><pre>env CC=gcc CCC=g++ ../dist/configure</pre></blockquote>
<hr size=1 noshade>
<p><li><b>I see the error
"libc internal error: _rmutex_unlock: rmutex not held", followed by a core
dump when running threaded or JAVA programs.</b>
<p>This is a known bug in Solaris 2.5 and it is fixed by Sun patch 103187-25.
<hr size=1 noshade>
<p><li><b>I see error reports of nonexistent files, corrupted metadata
pages and core dumps.</b>
<p>Solaris 7 contains a bug in the threading libraries (-lpthread,
-lthread), which causes the wrong version of the pwrite routine to be
linked into the application if the thread library is linked in after
the C library. The result will be that the pwrite function is called
rather than the pwrite64. To work around the problem, use an explicit
link order when creating your application.
<p>Sun Microsystems is tracking this problem with Bug Id's 4291109 and 4267207,
and patch 106980-09 to Solaris 7 fixes the problem:
<p><blockquote><pre>Bug Id: 4291109
Duplicate of: 4267207
Category: library
Subcategory: libthread
State: closed
Synopsis: pwrite64 mapped to pwrite
Description:
When libthread is linked after libc, there is a table of functions in
libthread that gets "wired into" libc via _libc_threads_interface().
The table in libthread is wrong in both Solaris 7 and on28_35 for the
TI_PWRITE64 row (see near the end).</pre></blockquote>
<hr size=1 noshade>
<p><li><b>I see corrupted databases when doing hot backups or creating
a hot failover archive.</b>
<p>The Solaris cp utility is implemented using the mmap system call, and
so writes are not blocked when it reads database pages. See
<a href="../../ref/transapp/reclimit.html">Berkeley DB recoverability</a> for more
information.
<hr size=1 noshade>
<p><li><b>I see errors about "open64" when building C++ applications.</b>
<p>In some releases of Solaris, include files redefine "open" when big-file
support (the HAVE_FILE_OFFSET_BITS and _FILE_OFFSET_BITS #defines) is
enabled. This causes problems when compiling for C++, where "open" is
a legal identifier used in the Berkeley DB C++ API. To work around this
problem, avoid including those include files in C++ files which also
include Berkeley DB include files and call into the Berkeley DB API, or specify the
<a href="../../ref/build_unix/conf.html#--disable-largefile">--disable-largefile</a> configuration option and then rebuild.
</ol>
<table width="100%"><tr><td><br></td><td align=right><a href="../../ref/build_unix/sco.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/build_unix/sunos.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
</body>
</html>
|