| <!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 GLib Applications</title> |
| <meta name="generator" content="DocBook XSL Stylesheets V1.75.2"> |
| <link rel="home" href="index.html" title="GLib Reference Manual"> |
| <link rel="up" href="glib.html" title="GLib Overview"> |
| <link rel="prev" href="glib-cross-compiling.html" title="Cross-compiling the GLib package"> |
| <link rel="next" href="glib-running.html" title="Running GLib Applications"> |
| <meta name="generator" content="GTK-Doc V1.14 (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="glib-cross-compiling.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td> |
| <td><a accesskey="u" href="glib.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">GLib Reference Manual</th> |
| <td><a accesskey="n" href="glib-running.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td> |
| </tr></table> |
| <div class="refentry" title="Compiling GLib Applications"> |
| <a name="glib-compiling"></a><div class="titlepage"></div> |
| <div class="refnamediv"><table width="100%"><tr> |
| <td valign="top"> |
| <h2><span class="refentrytitle">Compiling GLib Applications</span></h2> |
| <p>Compiling GLib Applications — |
| How to compile your GLib application |
| </p> |
| </td> |
| <td valign="top" align="right"></td> |
| </tr></table></div> |
| <div class="refsect1" title="Compiling GLib Applications on UNIX"> |
| <a name="id473113"></a><h2>Compiling GLib Applications on UNIX</h2> |
| <p> |
| To compile a GLib application, you need to tell the compiler where to |
| find the GLib header files and libraries. This is done with the |
| <span class="application">pkg-config</span> utility. |
| </p> |
| <p> |
| The following interactive shell session demonstrates how |
| <span class="application">pkg-config</span> is used (the actual output on |
| your system may be different): |
| </p> |
| <pre class="programlisting"> |
| $ pkg-config --cflags glib-2.0 |
| -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include |
| $ pkg-config --libs glib-2.0 |
| -L/usr/lib -lm -lglib-2.0 |
| </pre> |
| <p> |
| </p> |
| <p> |
| If your application uses threads or <span class="structname">GObject</span> |
| features, it must be compiled and linked with the options returned by the |
| following <span class="application">pkg-config</span> invocations: |
| </p> |
| <pre class="programlisting"> |
| $ pkg-config --cflags --libs gthread-2.0 |
| $ pkg-config --cflags --libs gobject-2.0 |
| </pre> |
| <p> |
| </p> |
| <p> |
| If your application uses modules, it must be compiled and linked with the options |
| returned by one of the following <span class="application">pkg-config</span> invocations: |
| </p> |
| <pre class="programlisting"> |
| $ pkg-config --cflags --libs gmodule-no-export-2.0 |
| $ pkg-config --cflags --libs gmodule-2.0 |
| </pre> |
| <p> |
| The difference between the two is that gmodule-2.0 adds <code class="option">--export-dynamic</code> |
| to the linker flags, which is often not needed. |
| </p> |
| <p> |
| The simplest way to compile a program is to use the "backticks" |
| feature of the shell. If you enclose a command in backticks |
| (<span class="emphasis"><em>not single quotes</em></span>), then its output will be |
| substituted into the command line before execution. So to compile |
| a GLib Hello, World, you would type the following: |
| </p> |
| <pre class="programlisting"> |
| $ cc `pkg-config --cflags --libs glib-2.0` hello.c -o hello |
| </pre> |
| <p> |
| </p> |
| <p> |
| If you want to make sure that your program doesn't use any deprecated |
| functions, you can define the preprocessor symbol G_DISABLE_DEPRECATED |
| by using the command line option <code class="literal">-DG_DISABLE_DEPRECATED=1</code>. |
| </p> |
| <p> |
| The recommended way of using GLib has always been to only include the |
| toplevel headers <code class="filename">glib.h</code>, |
| <code class="filename">glib-object.h</code>, <code class="filename">gio.h</code>. |
| Still, there are some exceptions; these headers have to be included separately: |
| <code class="filename">gmodule.h</code>, |
| <code class="filename">glib/gi18n-lib.h</code> or <code class="filename">glib/gi18n.h</code> (see |
| the <a class="link" href="glib-I18N.html" title="Internationalization">Internationalization section</a>), |
| <code class="filename">glib/gprintf.h</code> and <code class="filename">glib/gstdio.h</code> |
| (we don't want to pull in all of stdio). |
| </p> |
| <p> |
| Starting with 2.17, GLib enforces this by generating an error |
| when individual headers are directly included. To help with the |
| transition, the enforcement is not turned on by default for GLib |
| headers (it <span class="emphasis"><em>is</em></span> turned on for GObject and GIO). |
| To turn it on, define the preprocessor symbol G_DISABLE_SINGLE_INCLUDES |
| by using the command line option <code class="literal">-DG_DISABLE_SINGLE_INCLUDES</code>. |
| </p> |
| </div> |
| </div> |
| <div class="footer"> |
| <hr> |
| Generated by GTK-Doc V1.14</div> |
| </body> |
| </html> |