summaryrefslogtreecommitdiff
path: root/docs/installation/cross_compile_unix.html
blob: 088852d9bbc3f72b1adc3951ab15a88e86a96041 (plain)
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
<?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>Cross-Compiling on Unix</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_flags.html" title="Changing compile or load options" />
    <link rel="next" href="build_unix_install.html" title="Installing Berkeley DB" />
  </head>
  <body>
    <div xmlns="" class="navheader">
      <div class="libver">
        <p>Library Version 12.1.6.1</p>
      </div>
      <table width="100%" summary="Navigation header">
        <tr>
          <th colspan="3" align="center">Cross-Compiling on
        Unix</th>
        </tr>
        <tr>
          <td width="20%" align="left"><a accesskey="p" href="build_unix_flags.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_install.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="cross_compile_unix"></a>Cross-Compiling on
        Unix</h2>
          </div>
        </div>
      </div>
      <p> 
        The purpose of cross-compiling is to build a Berkeley DB
        library on one platform that is to be used on a different
        platform. This section demonstrates how to build a library
        compatible with the ARM platform from a 32-bit x86 Linux
        platform. You will need to adjust the build tools and options
        to match your particular platforms.
    </p>
      <div class="orderedlist">
        <ol type="1">
          <li>
            <p>
                Download, install, and test a toolchain that can
                build the desired target binaries. In this example, we
                use the <code class="literal">arm-linux-gnueabi-gcc</code>
                package.
            </p>
          </li>
          <li>
            <p> 
                Decide on your configuration options, and set up
                your environment to use the appropriate compiler and
                compiler tools. It is often easiest to set this up as
                a small shell script. For example:
            </p>
            <pre class="programlisting">#!/bin/sh -f
env \
CC=/usr/bin/arm-linux-gnueabi-gcc \
STRIP=/usr/bin/arm-linux-gnueabi-strip \
../dist/configure \
--build=i686-pc-linux-gnu \
--host=arm-linux-gnueabi \
--enable-java \
--enable-sql \
--enable-jdbc \
--enable-smallbuild \
--enable-shared \
--enable-stripped_messages \
--prefix=$HOME/ARM-linux/install \
$* </pre>
            <p> 
                The <code class="literal">--build</code> flag indicates the
                system on which you are compiling and the
                <code class="literal">--host</code> flag indicates the
                target platform. Adjust or omit the
                <code class="literal">--enable</code> and
                <code class="literal">--prefix</code> flag settings as
                dictated by your own needs.
            </p>
          </li>
          <li>
            <p>
                Unpack your Berkeley DB distribution and go to the
                <code class="literal">build_unix</code> directory.
                Alternatively, you may create a more
                appropriately-named directory at the same level and
                build in it. For example,
                <code class="literal">build_arm</code>. 
            </p>
          </li>
          <li>
            <p> 
                In your build directory, configure by executing
                your script, then <code class="literal">make</code> and
                <code class="literal">make install</code>. Review any
                compiler warnings and fix if necessary, repeating the
                <code class="literal">configure</code> and
                <code class="literal">make</code> steps until you are
                satisfied. The resulting libraries and executables can
                then be transferred to your target system. 
            </p>
          </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_flags.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_install.html">Next</a></td>
        </tr>
        <tr>
          <td width="40%" align="left" valign="top">Changing compile or load
        options </td>
          <td width="20%" align="center">
            <a accesskey="h" href="index.html">Home</a>
          </td>
          <td width="40%" align="right" valign="top"> Installing Berkeley
        DB</td>
        </tr>
      </table>
    </div>
  </body>
</html>