libdb/docs/installation/build_unix_aix.html
2012-11-14 16:35:20 -05:00

159 lines
8 KiB
HTML
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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>AIX</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_notes.html" title="Architecture independent FAQ" />
<link rel="next" href="build_unix_freebsd.html" title="FreeBSD" />
</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">AIX</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="build_unix_notes.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_freebsd.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_aix"></a>AIX</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 are required when compiling threaded
applications on AIX. If you are compiling a threaded application, you
must compile with the _THREAD_SAFE flag and load with specific
libraries; for example, "-lc_r". Specifying the compiler name with a
trailing "_r" usually performs the right actions for the system.</p>
<pre class="programlisting">xlc_r ...
cc -D_THREAD_SAFE -lc_r ...</pre>
<p>The Berkeley DB library will automatically build with the correct options.</p>
</li>
<li>
<span class="bold">
<strong>I can't run using the <a href="../api_reference/C/envopen.html#envopen_DB_SYSTEM_MEM" class="olink">DB_SYSTEM_MEM</a> option to
<a href="../api_reference/C/envopen.html" class="olink">DB_ENV-&gt;open()</a>.</strong>
</span>
<p>AIX 4.1 allows applications to map only 10 system shared memory
segments. In AIX 4.3, this has been raised to 256K segments, but only
if you set the environment variable "export EXTSHM=ON".</p>
</li>
<li>
<span class="bold">
<strong>On AIX 4.3.2 (or before) I see duplicate symbol warnings when
building the C++ shared library and when linking applications.</strong>
</span>
<p>We are aware of some duplicate symbol warnings with this platform,
but they do not appear to affect the correct operation of applications.</p>
</li>
<li>
<span class="bold">
<strong>On AIX 4.3.3 I see undefined symbols for DbEnv::set_error_stream,
Db::set_error_stream or DbEnv::verify when linking C++ applications.
(These undefined symbols also appear when building the Berkeley DB C++ example
applications).</strong>
</span>
<p>By default, Berkeley DB is built with _LARGE_FILES set to 1 to support the
creation of "large" database files. However, this also affects how
standard classes, like iostream, are named internally. When building
your application, use a "-D_LARGE_FILES=1" compilation option, or insert
"#define _LARGE_FILES 1" before any #include statements.</p>
</li>
<li>
<span class="bold">
<strong>I can't create database files larger than 1GB on AIX.</strong>
</span>
<p>If you're running on AIX 4.1 or earlier, try changing the source code
for <code class="filename">os/os_open.c</code> to always specify the <span class="bold"><strong>O_LARGEFILE</strong></span>
flag to the <code class="literal">open</code>(2) system call, and recompile Berkeley DB from
scratch.</p>
<p>Also, the documentation for the IBM Visual Age compiler states that it
does not not support the 64-bit filesystem APIs necessary for creating
large files; the ibmcxx product must be used instead. We have not heard
whether the GNU gcc compiler supports the 64-bit APIs or not.</p>
<p>Finally, to create large files under AIX, the filesystem has to be
configured to support large files and the system wide user hard-limit
for file sizes has to be greater than 1GB.</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>
<li>
<span class="bold">
<strong>I see the error "Redeclaration of lseek64" when building Berkeley DB with the --enable-sql and --enable-test options.</strong>
</span>
<p>In some releases of AIX, the system include files (most commonly <code class="literal">unistd.h</code>) redefine <code class="literal">lseek</code> to <code class="literal">lseek64</code> when large-file support is enabled even though <code class="literal">lseek</code> may have already been defined when the <code class="literal">_LARGE_FILE_API</code> macro is on. To work around this problem, do either one of the following:
</p>
<div class="orderedlist">
<ol type="a">
<li>Disable large-file support in Berkeley DB by specifying the <code class="literal">--disable-largefile</code> configuration option and rebuilding. </li>
<li>Edit <code class="literal">db.h</code> manually after running the configure command, and remove the line that includes <code class="literal">unistd.h</code>. </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_notes.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_freebsd.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">Architecture independent FAQ </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> FreeBSD</td>
</tr>
</table>
</div>
</body>
</html>