summaryrefslogtreecommitdiff
path: root/docs/reference/html/gmime-building.html
diff options
context:
space:
mode:
Diffstat (limited to 'docs/reference/html/gmime-building.html')
-rw-r--r--docs/reference/html/gmime-building.html284
1 files changed, 284 insertions, 0 deletions
diff --git a/docs/reference/html/gmime-building.html b/docs/reference/html/gmime-building.html
new file mode 100644
index 0000000..977ebf4
--- /dev/null
+++ b/docs/reference/html/gmime-building.html
@@ -0,0 +1,284 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Compiling the GMime libraries</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="GMime 2.6 Reference Manual">
+<link rel="up" href="gmime.html" title="Part I. GMime Overview">
+<link rel="prev" href="gmime.html" title="Part I. GMime Overview">
+<link rel="next" href="gmime-compiling.html" title="Compiling GMime Applications">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="gmime.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="gmime.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GMime 2.6 Reference Manual</th>
+<td><a accesskey="n" href="gmime-compiling.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gmime-building"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">Compiling the GMime libraries</span></h2>
+<p>Compiling the GMime Libraries — How to compile GMime itself</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="overview"></a><h2>Building GMime on UNIX-like systems</h2>
+<p>
+ This chapter covers building and installing GMime on UNIX and
+ UNIX-like systems such as Linux. Compiling GMime on Microsoft
+ Windows is not a goal of the project, however if you are able
+ build on a Microsoft Windows platform, do send me building and
+ installing instructions and I will add them to this document.
+ </p>
+<p>
+ Before we get into the details of how to compile GMime, I should
+ mention that binary packages of GMime prebuilt for your operating
+ system may be available either from your operating system vendor
+ or from independent sources such as http://rpmfind.net. If you
+ can find them, it may be the easiest way of getting started
+ developing GMime.
+ </p>
+<p>
+ On UNIX-like systems GMime uses the standard GNU build system,
+ using <span class="application">autoconf</span> for package
+ configuration and resolving portability issues,
+ <span class="application">automake</span> for building makefiles that
+ comply with the GNU Coding Standards, and
+ <span class="application">libtool</span> for building shared libraries
+ on multiple platforms.
+ </p>
+<p>
+ If you are building GMime from the distributed source packages,
+ then you won't need these tools installed; the necessary pieces
+ of the tools are already included in the source packages. But
+ it's useful to know a bit about how packages that use these
+ tools work. A source package is distributed as a
+ <code class="literal">tar.gz</code> file which you unpack into a
+ directory full of the source files as follows:
+ </p>
+<pre class="programlisting">
+ tar -zxvf gmime-2.6.x.tar.gz
+ </pre>
+<p>
+ In the toplevel of the directory that is created, there will be
+ a shell script called <code class="filename">configure</code> which
+ you then run to take the template makefiles called
+ <code class="filename">Makefile.in</code> in the package and create
+ makefiles customized for your operating system. The
+ <code class="filename">configure</code> script can be passed various
+ command line arguments to determine how the package is built and
+ installed. The most commonly useful argument is the
+ <code class="systemitem">--prefix</code> argument which specifies where
+ the package is installed. To install a package into
+ <code class="filename">/opt/gmime</code> you would run configure as:
+ </p>
+<pre class="programlisting">
+ ./configure --prefix=/opt/gmime
+ </pre>
+<p>
+ A full list of options can be found by running
+ <code class="filename">configure</code> with the
+ <code class="systemitem">--help</code> argument. In general, the defaults
+ are right and should be trusted. After you've run
+ <code class="filename">configure</code>, you then run the
+ <span class="command"><strong>make</strong></span> command to build the package and install
+ it.
+ </p>
+<pre class="programlisting">
+ make
+ make install
+ </pre>
+<p>
+ If you don't have permission to write to the directory you are
+ installing in, you may have to change to root temporarily before
+ running <code class="literal">make install</code>. A quick way to do this is
+ to use the <span class="command"><strong>su</strong></span> command with the
+ <code class="systemitem">-c</code> option
+ (ex. <code class="literal">su -c "make install"</code>). Also, if you are
+ installing in a system directory, on some systems (such as
+ Linux), you will need to run <span class="command"><strong>ldconfig</strong></span> after
+ <code class="literal">make install</code> so that the newly installed
+ libraries will be found.
+ </p>
+<p>
+ Several environment variables are useful to pass to set before
+ running configure. <code class="envar">CPPFLAGS</code> contains options to
+ pass to the C compiler, and is used to tell the compiler where
+ to look for include files. The <code class="envar">LDFLAGS</code> variable
+ is used in a similar fashion for the linker. Finally the
+ <code class="envar">PKG_CONFIG_PATH</code> environment variable contains
+ a search path that <span class="command"><strong>pkg-config</strong></span> (see below)
+ uses when looking for a file describing how to compile
+ programs using different libraries. If you were installing GMime
+ and it's dependencies into <code class="filename">/opt/gmime</code>, you
+ might want to set these variables as:
+ </p>
+<pre class="programlisting">
+ CPPFLAGS="-I/opt/gmime/include"
+ LDFLAGS="-L/opt/gmime/lib"
+ PKG_CONFIG_PATH="/opt/gmime/lib/pkgconfig"
+ export CPPFLAGS LDFLAGS PKG_CONFIG_PATH
+ </pre>
+<p>
+ You may also need to set the <code class="envar">LD_LIBRARY_PATH</code>
+ environment variable so the systems dynamic linker can find
+ the newly installed libraries, and the <code class="envar">PATH</code>
+ environment program so that utility binaries installed by
+ the various libraries will be found.
+ </p>
+<pre class="programlisting">
+ LD_LIBRARY_PATH="/opt/gmime/lib"
+ PATH="/opt/gmime/bin:$PATH"
+ export LD_LIBRARY_PATH PATH
+ </pre>
+</div>
+<div class="refsect1">
+<a name="dependencies"></a><h2>Dependencies</h2>
+<p>
+ Before you can compile the GMime library, you need to have
+ various other tools and libraries installed on your
+ system. The two tools needed during the build process (as
+ differentiated from the tools used in when creating GMime
+ mentioned above such as <span class="application">autoconf</span>)
+ are <span class="command"><strong>pkg-config</strong></span> and GNU make.
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p><a class="ulink" href="http://www.freedesktop.org/software/pkgconfig/" target="_top">pkg-config</a>
+ is a tool for tracking the compilation flags needed for
+ libraries that are used by the GMime libraries. (For each
+ library, a small <code class="literal">.pc</code> text file is installed in a standard
+ location that contains the compilation flags needed for that
+ library along with version number information.) The version
+ of <span class="command"><strong>pkg-config</strong></span> needed to build GMime is
+ mirrored in the <code class="filename">dependencies</code> directory
+ on the <a class="ulink" href="ftp://ftp.gtk.org/pub/gtk/v2.0/" target="_top">GTK+ FTP
+ site.</a></p></li>
+<li class="listitem"><p>
+ The GMime makefiles will mostly work with different versions
+ of <span class="command"><strong>make</strong></span>, however, there tends to be
+ a few incompatibilities, so the GMime team recommends
+ installing <a class="ulink" href="http://www.gnu.org/software/make" target="_top">GNU
+ make</a> if you don't already have it on your system
+ and using it. (It may be called <span class="command"><strong>gmake</strong></span>
+ rather than <span class="command"><strong>make</strong></span>.)
+ </p></li>
+</ul></div>
+<p>
+ GMime depends on the existance of two (2) libraries: GLib and iconv.
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p>
+ The GLib library provides core non-graphical functionality
+ such as high level data types, Unicode manipulation, and
+ a object and type system to C programs. It is available
+ from the <a class="ulink" href="ftp://ftp.gtk.org/pub/gtk/v2.0/" target="_top">GTK+
+ FTP site.</a>
+ </p></li>
+<li class="listitem"><p>
+ The <a class="ulink" href="http://www.gnu.org/software/libiconv/" target="_top">GNU
+ libiconv library</a> is needed to build GLib and GMime
+ if your system doesn't already have the
+ <code class="function">iconv()</code> function for doing conversion
+ between character encodings. Most modern systems should have
+ <code class="function">iconv()</code>.
+ </p></li>
+</ul></div>
+</div>
+<div class="refsect1">
+<a name="building"></a><h2>Building and testing GMime</h2>
+<p>
+ First make sure that you have the necessary external
+ dependencies installed: <span class="command"><strong>pkg-config</strong></span>, GNU make,
+ and, if necessary, libiconv. To get detailed information about
+ building these packages, see the documentation provided with the
+ individual packages. On a newer Linux system, it's quite likely
+ that you'll have all of these installed already.
+ </p>
+<p>
+ Then build and install the GMime libraries in the order:
+ libiconv, GLib, then GMime. For each library, follow the
+ steps of <code class="literal">configure</code>, <code class="literal">make</code>,
+ <code class="literal">make install</code> mentioned above. If you're
+ lucky, this will all go smoothly, and you'll be ready to
+ <a class="link" href="gmime-compiling.html" title="Compiling GMime Applications">start compiling your own GMime
+ applications</a>. You can test your GMime installation
+ by running <span class="command"><strong>pkg-config --modversion gmime-2.6</strong></span>
+ and making sure that it can both find GMime and reports the
+ correct version.
+ </p>
+<p>
+ If one of the <code class="filename">configure</code> scripts fails or running
+ <span class="command"><strong>make</strong></span> fails, look closely at the error
+ messages printed; these will often provide useful information
+ as to what went wrong. When <code class="filename">configure</code>
+ fails, extra information, such as errors that a test compilation
+ ran into, is found in the file <code class="filename">config.log</code>.
+ Looking at the last couple of hundred lines in this file will
+ frequently make clear what went wrong. If all else fails, you
+ can ask for help by emailing me, fejj@gnome.org
+ </p>
+</div>
+<div class="refsect1">
+<a name="extra-configuration-options"></a><h2>Extra Configuration Options</h2>
+<p>
+ In addition to the normal options, the
+ <span class="command"><strong>configure</strong></span> script for the GMime library
+ supports a number of additional arguments. (Command line
+ arguments for the other GMime libraries are described in
+ the documentation distributed with those libraries.)
+
+ </p>
+<div class="cmdsynopsis"><p><code class="command">./configure</code> [[--enable-profiling] | [--enable-warnings] | [--enable-mono] | [--enable-gtk-doc] | [--enable-largfile]]</p></div>
+<p>
+ </p>
+<p><b>
+ <code class="systemitem">--enable-profiling</code>
+ . </b>
+ Normally GMime will not pass the <code class="literal">-pg</code> flag to
+ <span class="command"><strong>gcc</strong></span> when building. This option will enable
+ the use of that flag thus building profiling information into
+ the GMime libraries for use with the GNU Profiler, gprof. Odds
+ are you do not care about this option unless you are either me
+ or desire to profile GMime and/or your program.
+ </p>
+<p><b>
+ <code class="systemitem">--enable-warnings</code>
+ . </b>
+ This option enables parser warnings about invalid MIME to be
+ logged to stderr at runtime. Again, it is unlikely you will
+ care to use this option.
+ </p>
+<p><b>
+ <code class="systemitem">--enable-mono</code>
+ . </b>
+ This option will include the Mono .NET bindings as part of
+ the build.
+ </p>
+<p><b>
+ <code class="systemitem">--enable-gtk-doc</code>
+ . </b>
+ This option will enable the building of the reference
+ documentation for GMime (e.g. the html pages you are
+ reading now).
+ </p>
+<p><b>
+ <code class="systemitem">--enable-largefile</code>
+ . </b>
+ This option will enable large file support (e.g. files larger
+ than 2GB) on 32bit systems. This flag is enabled by default
+ starting with GMime 2.4.5.
+ </p>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file