<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!--
#**************************************************************
#
#  Licensed to the Apache Software Foundation (ASF) under one
#  or more contributor license agreements.  See the NOTICE file
#  distributed with this work for additional information
#  regarding copyright ownership.  The ASF licenses this file
#  to you under the Apache License, Version 2.0 (the
#  "License"); you may not use this file except in compliance
#  with the License.  You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
#  Unless required by applicable law or agreed to in writing,
#  software distributed under the License is distributed on an
#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
#  KIND, either express or implied.  See the License for the
#  specific language governing permissions and limitations
#  under the License.
#
#**************************************************************
 -->
<html>
<head>
  <title>Apache OpenOffice %PRODUCT_RELEASE% SDK - Installation Guide</title>
  <link rel="stylesheet" type="text/css" href="sdk_styles.css">
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <meta name="author" content="J&uuml;rgen Schmidt">
  <meta name="created" content="2004-12-14">
</head>
<body class="sdkbody"><a name="install"></a>
<table class="table1" cellpadding=0>
  <tr style="background-image:url(images/sdk_head-2.png)">
    <td colspan="3" align="left"><img src="images/sdk_head-1.png" width="800" height="120" usemap="#Map" border="0"></td>
  </tr>
  <tr>
    <td colspan="3"><img class="nothing10" src="images/nada.gif"></td>
  </tr>
  <tr>
    <td class="content1"><img class="nothing8" src="images/nada.gif"></td>
    <td>
      <table class="table2">
	<tr>
	  <td colspan="3"><img class="nothing1" src="images/nada.gif"></td>
        </tr>
        <tr>
	  <td>
            <table class="table3">
	      <tr>
		<td colspan="2" class="head1">Installation Guide</td>
		<td align="right"><a href="../index.html" title="link to the SDK start page"><img class="navigate" src="images/nav_home.png"></a></td>
	      </tr>
	    </table>
	  </td>
        </tr>
	<tr>
          <td>
	    <table class="table3">
	      <tr>
		<td colspan="2">
		  <p>The Apache OpenOffice %PRODUCT_RELEASE% SDK comes with a set of development tools, base
		  libraries, header files and helper class files that can be used to
		  develop Java/C++ components, to embed the Apache OpenOffice %PRODUCT_RELEASE% application in
		  your own programs, or to use the API (scripting or remote control the
		  office). For a complete working environment, we have some additional
		  requirements:</p>
		</td>
	      </tr>
	      <tr valign="top">
		<td><b>Apache OpenOffice %PRODUCT_RELEASE% installation</b></td>
		<td class="content80">The SDK works on top of an existing office
		installation and uses the same libraries as the office installation.</td>
	      </tr>
	      <tr valign="middle">
		<td colspan="2"><img class="line" src="images/sdk_line-1.gif"></td>
	      </tr>
	      <tr valign="top">
		<td><b>JDK (1.5 or higher)</b></td>
          <td class="content80">
		  <p>A JDK is necessary for developing Java components or applications. An appropriate Java SDK can be found on <a target="_blank" href="https://java.sun.com/products" title="link to the Java SDK download page (online)">https://java.sun.com/products</a>.</p>
		  <p>Recommendation is to use Java 6 excepting for Mac OS because initially Mac OS supported a 64bit version of Java 6 only.</p>
		  <p><b>Note</b>: The Java compiler is <b><u>optional</u></b>!</p></td>
          </tr>
		  <tr valign="middle">
            <td colspan="2"><img class="line" src="images/sdk_line-1.gif"></td>
          </tr>
		  <tr valign="top">
          <td><b>C++ compiler</b></td>
          <td class="content80">A C++ compiler is necessary for developing C++
		  components or applications. UNO depends on a compiler dependent language
		  binding, so that we use the appropriate compiler where a language binding
		  exists:
		  <table class="table4">
		  <tr>
		  <td class="cell15">Solaris</td>
		  <td class="cell85">Sun Studio 8 (20070730)</td>
		  </tr>
		  <tr>
		  <td class="cell15">Linux</td>
		  <td class="cell80">GNU C++ compiler, gcc version 4.0.1</td>
		  </tr>
		  <tr>
		  <td class="cell15">Windows</td>
		  <td class="cell80">Microsoft C++ Compiler, Microsoft Visual Studio 2008 or the Express version (cl, version 15.00.21022)</td>
		  </tr>
		  </table>
		  <p><b>Note</b>: The C++ compiler is <b><u>optional</u></b>! If you use the Express edition you have to ensure that the <a href="https://www.microsoft.com/en-us/download/details.aspx?id=29">Microsoft Visual C++ 2008 Redistributable Package (x86)</a> is also installed. You can download this package from Microsoft directly.</p></td>
          </tr>
		  <tr valign="middle">
            <td colspan="2"><img class="line" src="images/sdk_line-1.gif"></td>
          </tr>
		  <tr valign="top">
          <td><b>Microsoft .NET Framework SDK version 1.0 or higher</b></td>
          <td class="content80">The SDK is required for building CLI applications.
		  That is, programs written in languages, such as C# or VB.NET.<br>
		  <p><b>Note</b>: The .NET Framework is <b><u>optional</u></b>!</p></td>
          </tr>
		  <tr valign="middle">
            <td colspan="2"><img class="line" src="images/sdk_line-1.gif"></td>
          </tr>
		  <tr valign="top">
          <td><b>GNU make (3.79.1 or higher)</b></td>
          <td class="content80">
		  <p>GNU make is used to build the examples of the SDK. GNU make is available from <a target="_blank" href="http://www.gnu.org" title="link to www.gnu.org (online)">http://www.gnu.org</a>. It can be downloaded via FTP from <a target="_blank" href="ftp://ftp.gnu.org/gnu/make" title="link to gnumake on www.gnu.org (online)">ftp://ftp.gnu.org/gnu/make</a></p>
		  <p><b>Note</b>: Windows user can find an executable of gnu make under <a target="_blank" href="http://www.mingw.org/wiki/Getting_Started" title="link to the MinGW Getting Started wiki (online)">http://www.mingw.org/wiki/Getting_Started</a> (see the mingw32-make link under &quot;Manual Installation&quot;). Do not use the Cygwin make, because it does not
		  work well. On Solaris gnu make can be found often under <b><i>/usr/sfw/bin/gmake</i></b>, but keep in mind that you have to use <b>'gmake'</b> then. Or you can find gnu make also under <a target="_blank" href="http://www.sunfreeware.com/" title="link to www.sunfreeware.com (online)">http://www.sunfreeware.com/</a>.</td>
          </tr>
		  <tr valign="middle">
            <td colspan="2"><img class="line" src="images/sdk_line-1.gif"></td>
          </tr>
		  <tr valign="top">
          <td><b>zip tool (2.3 or higher)</b></td>
          <td class="content80">The zip tool is used to create UNO packages. zip is
		  a new requirement to make the SDK independent of a Java SDK.<br>
		  If you do not have these already, you can download them from <a target="_blank" href="http://www.info-zip.org" title="link to www.ubfi-zip.org (online)">http://www.info-zip.org</a>. Note: The cygwin zip.exe does not work for the build under
		  the 4NT shell. You have to use the native w32 version.</td>
          </tr>
          <tr valign="middle">
            <td colspan="2"><img class="line" src="images/sdk_line-1.gif"></td>
          </tr>
          <tr valign="top">
          <td><b>cat and sed tools</b></td>
          <td class="content80">The cat and set tools are used to create some extensions.
          <p><b>Note for Windows users</b>: If you do not have these already, you can download them from
          <a target="_blank" href="https://sourceforge.net/projects/unxutils/files/latest/download" title="link to UnxUtils (online)">https://sourceforge.net/projects/unxutils/files/latest/download</a>.</p>
          </td>
          </tr>
		  <tr valign="middle">
            <td colspan="2"><img class="line" src="images/sdk_line-1.gif"></td>
          </tr>
          <td><b>Boost (<b>Unix only</b> and optional)</b></td>
          <td class="content80">The boost library is used today on Unix systems as replacement for the stlport library. The stlport library is removed and replaced by either the compiler stl (on Windows) or the boost stl on all Unix based systems. We are planning to switch to the compiler stl completely as soon as possible. The boost headers/library are <b>optional</b> and for C++ development only if stl containers are used.
          <p><b>Download:</b> <a target="_blank" href="https://sourceforge.net/projects/boost/files/boost/1.48.0/boost_1_48_0.tar.bz2/download" title="link to boost version 1.48.0 (online)">https://sourceforge.net/projects/boost/files/boost/1.48.0/boost_1_48_0.tar.bz2/download</a>.</p>
          </td>
		  <tr valign="middle">
            <td colspan="2"><img class="line" src="images/sdk_line-1.gif"></td>
          </tr>
		  <tr>
		    <td><img class="nothing10" src="images/nada.gif"></td>
			<td align="right">
			<a href="#install" title="link to the top of this page"><img class="navigate" src="images/nav_up.png"></a>
			<a href="../index.html" title="link to the SDK start page"><img class="navigate" src="images/nav_home.png"></a></td>
		  </tr>
		  <tr valign="middle">
          <td colspan="2">
		  <p>The SDK provides an implicit configuration mechanism, which
		  configures the SDK build environment to your personal needs the first
		  time you use the SDK environment. This configuration step creates a
		  new setsdkenv_XXX script in the user's home directory:</p>
		  <ul>
		    <li><b>$HOME/$OO_SDK_NAME/setsdkenv_unix.sh</b>&nbsp;&nbsp;-> for Unix
            <li><b>C:\Documents and Settings\&lt;username&gt;\Application Data\%OO_SDK_NAME%\setsdkenv_windows.bat</b>&nbsp;&nbsp;-> for Windows 2000/XP or later
          </ul>
		  <p>The automatically started configure script (Unix and Windows 2000/XP)
		  requests relevant information and directories (SDK, the Office, GNU make,
		  Java, C++), in order to prepare a working SDK environment. After completing the
		  configure script once, the newly created script is always used to set the
		  necessary environment variables for using the SDK and the required
		  tools.</P>
		  <p>On UNIX operating systems, the configure script uses Perl. Linux systems should have
		  installed a working Perl version, and on Solaris you can find a working
		  Perl version under <a target="_blank" href="http://www.sunfreeware.com/" title="link to www.sunfreeware.com (online)">http://www.sunfreeware.com/</a> if
		  necessary. On Windows, the configure script uses Windows Script and
		  a JScipt. If you have problems with Windows Script, you can download a
		  newer version of <a href="https://www.microsoft.com/downloads/details.aspx?FamilyId=C717D943-7E4B-4622-86EB-95A22B832CAA&amp;displaylang=en" title="link to the download page for the Windows Script">Windows Script</a>.
          </p>
          <p>On other versions of Windows, use the batch
		  file template <b>&lt;OO_SDK_HOME&gt;\setsdkenv_windows.template</b>,
		  rename it to *.bat, and adapt it to your local environment.</p>
		  <p>If you use the template batch file, edit and set
		  the following variables:</p>
		  <table class="table4">
		  <tr valign="top">
		  <td class="cell20"><b>OFFICE_HOME</b></td>
		  <td class="cell80">Path to an existing Apache OpenOffice
		  installation, e.g. &quot;/opt/openoffice4&quot;. Be sure
		  that it is not a user installation only.</td>
		  </tr>
          <tr><a name="oosdkname"></a>
          <td class="cell20"><b>OO_SDK_NAME</b></td>
          <td class="cell80">The configuration uses the
		  directory name of the SDK, but you can use another name as well.
		  It is important that the name does not contain spaces, because of a limitation
		  of gnu make which cannot handle spaces correctly. This name is, for
		  example, used to create an output directory in the users home directory
		  for any generated output when you use the SDK build environment.</td>
          </tr>
		  <tr>
		  <td class="cell20"><b>OO_SDK_HOME</b></td>
		  <td class="cell80">Path to the SDK root directory, e.g.
		  &quot;/opt/openoffice4/sdk/&quot;</td>
		  </tr>
		  <tr>
		  <td class="cell20"><b>OO_SDK_JAVA_HOME</b></td>
		  <td class="cell80">Path to a JDK root directory. The JDK is
		  <b>optional</b> and only necessary if you like to run the Java examples
		  or if you like to use the SDK environment to develop your own Java
		  solution.</td>
		  </tr>
		  <tr>
		  <td class="cell20"><b>OO_SDK_CPP_HOME</b></td>
		  <td class="cell80">Path to the C++ compiler (on Windows, the directory
		  where the &quot;<i>vcvar32.bat</i>&quot; file can be found). The C++
		  compiler is <b>optional</b> and only necessary for building the C++
		  examples.</td>
		  </tr>
		  <tr>
		  <td class="cell20"><b>OO_SDK_CLI_HOME</b></td>
		  <td class="cell80">Path to the C# compiler and VB.NET compiler (on
		  Windows, this directory can be found under the system directory (e.g.
		  c:\Windows\Microsoft.NET\Framework\v1.0.3705). The compilers are
		  <b>optional</b> and only necessary for building the CLI examples.<br>
		  <b>Note: Windows only!</b></td>
		  </tr>
		  <tr>
		  <td class="cell20"><b>OO_SDK_MAKE_HOME</b></td>
		  <td class="cell80">Path to GNU make.</td>
		  </tr>
		  <tr>
		  <td class="cell20"><b>OO_SDK_ZIP_HOME</b></td>
		  <td class="cell80">Path to the 'zip' tool.</td>
		  </tr>
          <tr>
          <td class="cell20"><b>OO_SDK_CAT_HOME</b></td>
          <td class="cell80">Path to the 'cat' tool.</td>
          </tr>
          <tr>
          <td class="cell20"><b>OO_SDK_SED_HOME</b></td>
          <td class="cell80">Path to the 'sed' tool.</td>
          </tr>
          <tr>
          <td class="cell20"><b>OO_SDK_BOOST_HOME</b></td>
          <td class="cell80">Path to a boost installation, this is optional for C++ and Unix only.</td>
          </tr>
		  <tr>
		  <td class="cell20"><b>OO_SDK_OUTPUT_DIR</b></td>
		  <td class="cell80">Path to an existing directory where the example output
		  is generated. The output directory is <b>optional</b>, by default
		  the output is generated in the SDK directory itself. If an output
		  directory is specified, the output is generated in a SDK dependent
		  subdirectory in this directory (e.g. &lt;OO_SDK_OUTPUT_DIR&gt;
		  /Apache OpenOffice %PRODUCT_RELEASE%/LINUXExample.out)</td>
		  </tr>
		  <tr>
		  <td class="cell20"><b>SDK_AUTO_DEPLOYMENT</b></td>
		  <td class="cell80">If this variable is set, the component examples are automatically deployed into the Office installation referenced by
		  OFFICE_HOME. See also chapter <a href="https://wiki.openoffice.org/wiki/Documentation/DevGuide/Extensions/unopkg" title="link to the &quot;Extension Manager - unopkg&quot; chapter in the Developer's Guide">&quot;Extension Manager - unopkg&quot;</a> from the Developer's Guide.
		  This variable is only relevant when OFFICE_HOME is set.</td>
		  </tr>
		  </table>
		  <p>You must run the <b>setsdkenv_XXX</b> script every time you want to
		  use the configured SDK environment. The settings are local for the current
		  shell on Windows or the new started shell on UNIX. On UNIX you
		  can now source one of the prepared environment
		  script files (&quot;setsdkenv_unix.sh&quot; or
		  &quot;setsdkenv_unix.csh&quot; depending on the shell you use) to prepare
		  your current shell instead of starting a new shell.</p>
		  </td>
          </tr>
		  <tr valign="middle">
            <td colspan="2"><img class="line" src="images/sdk_line-1.gif"></td>
          </tr>
		  <tr>
		    <td><img class="nothing10" src="images/nada.gif"></td>
			<td align="right">
			<a href="#install" title="link to the top of this page"><img class="navigate" src="images/nav_up.png"></a>
			<a href="../index.html" title="link to the SDK start page"><img class="navigate" src="images/nav_home.png"></a></td>
		  </tr>
		  <tr>
		  <td colspan="2">
		  <p class="head2">Manual Setting</p>
		  <p>If you do not want to use the script to set your working
		  environment, you must set the appropriate environment variables
		  yourself. The script sets the following environment variables:</p>
		  <p class="head3">Common Environment Variables</p>
		  <table class="table4">
          <tr valign="top">
          <td class="cell20">OO_SDK_NAME</td>
          <td class="cell80">See description <a href="#oosdkname" title="link to the description of the environment variable OO_SDK_NAME">above</a>.</td>
          </tr>
          <tr valign="top">
          <td class="cell20">OO_SDK_OFFICE_BIN_DIR</td>
          <td class="cell80">The path to the program directory in the office installation (e.g. <i>$OFFICE_HOME/program</i>).</td>
          </tr>
          <tr valign="top">
          <td class="cell20">OO_SDK_OFFICE_LIB_DIR</td>
          <td class="cell80">The path to the office program directory in the office installation (e.g. <i>$OFFICE_HOME/program</i>).</td>
          </tr>
          <tr valign="top">
          <td class="cell20">OO_SDK_OFFICE_JAVA_DIR</td>
          <td class="cell80">The path to the classes directory in the office program directory where Java JARs are located (e.g.
          <i>$OFFICE_HOME/program/classes</i>).</td>
          </tr>
		  <tr valign="top">
		  <td class="cell20">CLASSPATH</td>
		  <td class="cell80">
          =<i>$OO_SDK_OFFICE_JAVA_DIR/juh.jar;
              $OO_SDK_OFFICE_JAVA_DIR/jurt.jar;
              $OO_SDK_OFFICE_JAVA_DIR/ridl.jar;
              $OO_SDK_OFFICE_JAVA_DIR/unoloader.jar;
              [$OO_SDK_OFFICE_JAVA_DIR/unoil.jar;]
              $CLASSPATH</i><br>
          <p>The classpath will be set or extended to the necessary jar files of
		  the specified office installation.</p>
		  </td>
		  </tr>
		  <tr valign="top">
		  <td class="cell20">OFFICE_PROGRAM_PATH</td>
		  <td class="cell80">=<i>$OFFICE_HOME/program</i><br>
		  <p>This variable is used to find, for example, the office type library and
		  the UNO package deployment tool.</p>
		  </td>
		  </tr>
		  <tr valign="top">
		  <td class="cell20">UNO_PATH</td>
		  <td class="cell80">=<i>$OFFICE_PROGRAM_PATH</i><br>
          <p>This variable is used to ensure that the new C++ UNO bootstrap
		  mechanism uses the configured office installation of the SDK. Normally
		  the bootstrap mechanism finds the default office installation for the
		  user on the system. This variable is optional but is set from the scripts
		  to ensure a homogeneous environment. Especially useful during development
		  where you might have more than one office installation installed.</p>
		  </td>
		  </tr>
		  </table>
		  <p class="head3">Environment Variables for UNIX</p>
		  <p class="head4">Solaris</p>
		  <table class="table4">
		  <tr valign="top">
		  <td class="cell20">LD_LIBRARY_PATH</td>
		  <td class="cell80">=<i>$OO_SDK_OFFICE_LIB_DIR: $OO_SDK_HOME/(solsparc|solintel)/lib: $LD_LIBRARY_PATH</i><br>
		  <p>The LD_LIBRARY_PATH will be set or will be extended by the office
		  library path, the platform dependent lib directory for several additional
		  libraries.</p>
		  </td>
		  </tr>
		  <tr valign="top">
		  <td class="cell20">PATH</td>
		  <td class="cell80">=<i>$OO_SDK_HOME/(solsparc|solintel)/bin:$OO_SDK_MAKE_HOME: $OO_SDK_ZIP_HOME: [$OO_SDK_CPP_HOME:] [$OO_SDK_JAVA_HOME/bin:] $OO_SDK_OFFICE_BIN_DIR: $PATH</i><br>
          <p>The PATH variable will be extended by the paths for the SDK development
		  tools, the compiler, the JDK, GNU make, the zip tool and the
		  OO_SDK_OFFICE_BIN_DIR, where the compiler or the JDK are
		  optional.</p>
		  </td>
		  </tr>
          <tr>
          <td colspan="2" class="cell80">Based on OFFICE_HOME, the script
          additionally creates symbolic links to the public dynamic libraries of
          the office UNO runtime in <i>$OO_SDK_HOME/(solsparc|solintel)/lib</i>, which are
          needed for linking.</td>
          </tr>
		  </table>
		  <p class="head4">Linux</p>
		  <table class="table4">
		  <tr valign="top">
		  <td class="cell20">LD_LIBRARY_PATH</td>
		  <td class="cell80">=<i>$OO_SDK_OFFICE_LIB_DIR: $SDK_HOME/linux/lib: $LD_LIBRARY_PATH</i><br>
		  <p>The LD_LIBRARY_PATH will be set or will be extended by the office
		  library path, the platform dependent lib directory for some additional
		  libraries.</p>
		  </td>
		  </tr>
		  <tr valign="top">
		  <td class="cell20">PATH</td>
		  <td class="cell80">=<i>$OO_SDK_HOME/linux/bin:$OO_SDK_MAKE_HOME: $OO_SDK_ZIP_HOME: [$OO_SDK_CPP_HOME:] [$OO_SDK_JAVA_HOME/bin:] $OO_SDK_OFFICE_BIN_DIR: $PATH</i><br>
		  <p>The PATH variable will be extended by the paths for the SDK development
		  tools, the compiler, the JDK, GNU make, the zip tool and the
		  OO_SDK_OFFICE_BIN_DIR, where the compiler and the JDK are
		  optional.</p>
		  </td>
		  </tr>
          <tr>
          <td colspan="2" class="cell80">Based on OFFICE_HOME, the script
          additionally creates symbolic links to the public dynamic libraries of
          the office UNO runtime in <i>$OO_SDK_HOME/linux/lib</i>, which are needed for
          linking.</td>
          </tr>
		  </table>
		  <p class="head3">Environment Variables for Windows</p>
		  <table class="table4">
		  <tr valign="top">
		  <td class="cell20">PATH</td>
		  <td class="cell80">=<i>%OO_SDK_HOME%\Windows\bin; %OO_SDK_MAKE_HOME%; %OO_SDK_ZIP_HOME%; [%OO_SDK_CLI_HOME%;] [%OO_SDK_CPP_HOME%;] [%OO_SDK_JAVA_HOME%\bin;] %OO_SDK_OFFICE_BIN_DIR%; %PATH%</i><br>
		  <p>The PATH variable will be extended by the paths for the SDK development
		  tools, the compiler, the JDK, GNU make, the zip tool and the
		  OO_SDK_OFFICE_BIN_DIR.</p>
		  </td>
		  </tr>
		  <tr valign="top">
		  <td class="cell20">LIB</td>
		  <td class="cell80">=<i>%OO_SDK_HOME%\windows\lib; %LIB%</i><br>
		  <p>The LIB variable will be extended by the path to the import libraries
		  that are necessary for Windows.</p>
		  </td>
		  </tr>
		  <tr valign="top">
		  <td colspan="2" class="cell80">In addition to setting these environment
		  variables, the script calls the &quot;<i>vcvar32.bat</i>&quot; batch file
		  which is provided by the Microsoft Developer Studio to set the necessary
		  environment variables for the compiler.</td>
		  </tr>
		  </table>
		  </td>
		  </tr>
		  </table>
          </td>
		</tr>
	  </table>
	</td>  	
  </tr>
  <tr>
    <td colspan="3"><img class="nothing30" src="images/nada.gif"></td>
  </tr>
  <tr>
    <td colspan="3"><img class="line" src="images/sdk_line-1.gif"></td>
  </tr>
  <tr>
    <td colspan="3">
      <div class="centertext">
	<p><img class="apachelogo" src="images/sdk-footer-logo.png" title="Apache Logo" alt="Apache Logo">
            Copyright &copy; 2011-2025 The Apache Software Foundation, Licensed under the Apache License, Version 2.0. Apache, the ASF logo, Apache OpenOffice and OpenOffice.org are trademarks of The Apache Software Foundation. Other names may be trademarks of their respective owners.<p>
      </div>
    </td>
  </tr>
</table>
<map name="Map">
  <area shape="rect" coords="25,100,385,25" href="https://www.openoffice.org">
</map>
</body>
</html>
