mirror of
https://github.com/berkeleydb/libdb.git
synced 2024-11-16 09:06:25 +00:00
182 lines
8.4 KiB
HTML
182 lines
8.4 KiB
HTML
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||
<head>
|
||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||
<title>Solaris</title>
|
||
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
|
||
<meta name="generator" content="DocBook XSL Stylesheets V1.73.2" />
|
||
<link rel="start" href="index.html" title="Berkeley DB Installation and Build Guide" />
|
||
<link rel="up" href="build_unix.html" title="Chapter 7. Building Berkeley DB for UNIX/POSIX" />
|
||
<link rel="prev" href="build_unix_sco.html" title="SCO" />
|
||
<link rel="next" href="build_unix_sunos.html" title="SunOS" />
|
||
</head>
|
||
<body>
|
||
<div xmlns="" class="navheader">
|
||
<div class="libver">
|
||
<p>Library Version 11.2.5.3</p>
|
||
</div>
|
||
<table width="100%" summary="Navigation header">
|
||
<tr>
|
||
<th colspan="3" align="center">Solaris</th>
|
||
</tr>
|
||
<tr>
|
||
<td width="20%" align="left"><a accesskey="p" href="build_unix_sco.html">Prev</a> </td>
|
||
<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_sunos.html">Next</a></td>
|
||
</tr>
|
||
</table>
|
||
<hr />
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title" style="clear: both"><a id="build_unix_solaris"></a>Solaris</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="orderedlist">
|
||
<ol type="1">
|
||
<li>
|
||
<span class="bold">
|
||
<strong>I can't compile and run multithreaded applications.</strong>
|
||
</span>
|
||
<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>
|
||
<pre class="programlisting">cc -mt ...
|
||
cc -D_REENTRANT ... -lthread
|
||
cc -D_REENTRANT ... -lpthread</pre>
|
||
<p>The Berkeley DB library will automatically build with the correct options.</p>
|
||
</li>
|
||
<li>
|
||
<span class="bold">
|
||
<strong>I've installed gcc on my Solaris system, but configuration
|
||
fails because the compiler doesn't work.</strong>
|
||
</span>
|
||
<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>
|
||
<pre class="programlisting">% which cc
|
||
/usr/ucb/cc
|
||
% cc
|
||
/usr/ucb/cc: language optional software package not installed</pre>
|
||
<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>
|
||
<pre class="programlisting">checking whether the C compiler (cc -O) works... no
|
||
configure: error: installation or configuration problem: C compiler
|
||
cannot create executables.</pre>
|
||
<p>The simplest workaround is to set your CC environment variable to the
|
||
system compiler and reconfigure; for example:</p>
|
||
<pre class="programlisting">env CC=gcc ../dist/configure</pre>
|
||
<p>If you are using the --configure-cxx option, you may also want to specify
|
||
a C++ compiler, for example the following:</p>
|
||
<pre class="programlisting">env CC=gcc CCC=g++ ../dist/configure</pre>
|
||
</li>
|
||
<li>
|
||
<span class="bold">
|
||
<strong>I see the error
|
||
"libc internal error: _rmutex_unlock: rmutex not held", followed by a core
|
||
dump when running threaded or JAVA programs.</strong>
|
||
</span>
|
||
<p>This is a known bug in Solaris 2.5 and it is fixed by Sun patch 103187-25.</p>
|
||
</li>
|
||
<li>
|
||
<span class="bold">
|
||
<strong>I see error reports of nonexistent files, corrupted metadata
|
||
pages and core dumps.</strong>
|
||
</span>
|
||
<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>
|
||
<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>
|
||
<pre class="programlisting">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>
|
||
</li>
|
||
<li>
|
||
<span class="bold">
|
||
<strong>I see corrupted databases when doing hot backups or creating
|
||
a hot failover archive.</strong>
|
||
</span>
|
||
<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="../programmer_reference/transapp_reclimit.html" class="olink">Berkeley DB recoverability</a>
|
||
for more information.</p>
|
||
</li>
|
||
<li>
|
||
<span class="bold">
|
||
<strong>Performance is slow and the application is doing a lot of I/O
|
||
to the disk on which the database environment's files are stored.</strong>
|
||
</span>
|
||
<p>By default, Solaris periodically flushes dirty blocks from memory-mapped
|
||
files to the backing filesystem. This includes the Berkeley DB database
|
||
environment's shared memory regions and can affect Berkeley DB performance.
|
||
Workarounds include creating the shared regions in system shared memory
|
||
(<a href="../api_reference/C/envopen.html#envopen_DB_SYSTEM_MEM" class="olink">DB_SYSTEM_MEM</a>) or application private memory
|
||
(<a href="../api_reference/C/envopen.html#envopen_DB_PRIVATE" class="olink">DB_PRIVATE</a>), or configuring Solaris to not flush memory-mapped
|
||
pages. For more information, see the "Solaris Tunable Parameters
|
||
Reference Manual: fsflush and Related Tunables".</p>
|
||
</li>
|
||
<li>
|
||
<span class="bold">
|
||
<strong>I see errors about "open64" when building Berkeley DB applications.</strong>
|
||
</span>
|
||
<p>System include files (most commonly fcntl.h) in some releases of AIX
|
||
and Solaris redefine "open" when large-file support is enabled
|
||
for applications. This causes problems when compiling applications
|
||
because "open" is a method in the Berkeley DB APIs. To work around this
|
||
problem:
|
||
</p>
|
||
<div class="orderedlist">
|
||
<ol type="a">
|
||
<li>Avoid including the problematical system include files in source code
|
||
files which also include Berkeley DB include files and call into the Berkeley DB
|
||
API.</li>
|
||
<li>Before building Berkeley DB, modify the generated include file db.h to itself
|
||
include the problematical system include files.</li>
|
||
<li>Turn off Berkeley DB large-file support by specifying the
|
||
<a class="link" href="build_unix_conf.html#build_unix_conf.--disable-largefile">--disable-largefile</a> configuration option and rebuilding.</li>
|
||
</ol>
|
||
</div>
|
||
</li>
|
||
</ol>
|
||
</div>
|
||
</div>
|
||
<div class="navfooter">
|
||
<hr />
|
||
<table width="100%" summary="Navigation footer">
|
||
<tr>
|
||
<td width="40%" align="left"><a accesskey="p" href="build_unix_sco.html">Prev</a> </td>
|
||
<td width="20%" align="center">
|
||
<a accesskey="u" href="build_unix.html">Up</a>
|
||
</td>
|
||
<td width="40%" align="right"> <a accesskey="n" href="build_unix_sunos.html">Next</a></td>
|
||
</tr>
|
||
<tr>
|
||
<td width="40%" align="left" valign="top">SCO </td>
|
||
<td width="20%" align="center">
|
||
<a accesskey="h" href="index.html">Home</a>
|
||
</td>
|
||
<td width="40%" align="right" valign="top"> SunOS</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
</body>
|
||
</html>
|