2001-04-17 02:55:34 +02:00
|
|
|
Simple install procedure
|
|
|
|
========================
|
|
|
|
|
|
|
|
% gzip -cd glib-@GLIB_VERSION@.tar.gz | tar xvf - # unpack the sources
|
|
|
|
% cd glib-@GLIB_VERSION@ # change to the toplevel directory
|
|
|
|
% ./configure # run the `configure' script
|
|
|
|
% make # build GLIB
|
|
|
|
|
|
|
|
[ Become root if necessary ]
|
|
|
|
% rm -rf /install-prefix/include/glib.h /install-prefix/include/gmodule.h
|
|
|
|
% make install # install GLIB
|
|
|
|
|
|
|
|
Requirements
|
|
|
|
============
|
|
|
|
|
2002-03-08 06:48:03 +01:00
|
|
|
GLib-2.0 requires pkg-config, which is tool for tracking the
|
|
|
|
compilation flags needed for libraries. (For each library, a small .pc
|
|
|
|
text file is installed in a standard location that contains the
|
|
|
|
compilation flags needed for that library along with version number
|
|
|
|
information.) Information about pkg-config can be found at:
|
|
|
|
|
|
|
|
http://www.freedesktop.org/software/pkgconfig/
|
|
|
|
|
|
|
|
GNU make (http://www.gnu.org/software/make) is also recommended.
|
|
|
|
|
2001-04-17 02:55:34 +02:00
|
|
|
In order to implement conversions between character sets,
|
|
|
|
GLib requires an implementation of the standard iconv() routine.
|
|
|
|
Most modern systems will have a suitable implementation, however
|
|
|
|
many older systems lack an iconv() implementation. On such systems,
|
|
|
|
you must install the libiconv library. This can be found at:
|
|
|
|
|
2002-03-08 06:48:03 +01:00
|
|
|
http://www.gnu.org/software/libiconv/
|
2001-04-17 02:55:34 +02:00
|
|
|
|
|
|
|
If your system has an iconv implementation but you want to use
|
|
|
|
libiconv instead, you can pass the --with-libiconv option to
|
|
|
|
configure. This forces libiconv to be used.
|
|
|
|
|
|
|
|
Note that if you have libiconv installed in your default include
|
|
|
|
search path (for instance, in /usr/local/), but don't enable
|
|
|
|
it, you will get an error while compiling GTK+ because the
|
|
|
|
iconv.h that libiconv installs hides the system iconv.
|
|
|
|
|
2002-05-22 21:52:41 +02:00
|
|
|
If you are using the native iconv implementation on Solaris
|
|
|
|
instead of libiconv, you'll need to make sure that you have
|
|
|
|
the converters between locale encodings and UTF-8 installed.
|
|
|
|
At a minimum you'll need the SUNWuiu8 package. You probably
|
|
|
|
should also install the SUNWciu8, SUNWhiu8, SUNWjiu8, and
|
|
|
|
SUNWkiu8 packages.
|
|
|
|
|
2002-06-13 22:00:58 +02:00
|
|
|
The native iconv on Compaq Tru64 doesn't contain support for
|
|
|
|
UTF-8, so you'll need to use GNU libiconv instead. (When
|
|
|
|
using GNU libiconv for GTK+, you'll need to use GNU libiconv
|
|
|
|
for GNU gettext as well.) This probably applies to related
|
|
|
|
operating systems as well.
|
|
|
|
|
2002-03-08 06:48:03 +01:00
|
|
|
Finally, for message catalog handling, GTK+ requires an implementation
|
|
|
|
of gettext(). If your system doesn't provide this functionality,
|
|
|
|
you should use the libintl library from the GNU gettext package,
|
|
|
|
available from:
|
|
|
|
|
|
|
|
http://www.gnu.org/software/gettext/
|
|
|
|
|
2001-04-17 02:55:34 +02:00
|
|
|
The Nitty-Gritty
|
|
|
|
================
|
|
|
|
|
|
|
|
The 'configure' script can be given a number of options to enable
|
|
|
|
and disable various features. For a complete list, type:
|
|
|
|
|
|
|
|
./configure --help
|
|
|
|
|
|
|
|
A few of the more important ones:
|
|
|
|
|
|
|
|
* --prefix=PREFIX install architecture-independent files in PREFIX
|
|
|
|
[ Defaults to /usr/local ]
|
|
|
|
|
|
|
|
* --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
|
|
|
|
[ Defaults to the value given to --prefix ]
|
|
|
|
|
2002-12-20 16:23:12 +01:00
|
|
|
* --enable-debug=[yes/no/minimum] determines the amount of debugging
|
|
|
|
code to include. 'yes' will includes some
|
|
|
|
extra checks and debugging features that
|
|
|
|
may be useful for people developing with
|
|
|
|
GLib. 'no' produces a somewhat smaller and
|
|
|
|
faster library at the expense of reduced
|
|
|
|
robustness.
|
|
|
|
[ Defaults to 'minimum' for stable releases ]
|
|
|
|
|
2001-10-31 16:40:52 +01:00
|
|
|
* --enable-gc-friendly When enabled all memory freed by the application,
|
|
|
|
but retained by GLib for performance reasons
|
|
|
|
is set to zero, thus making deployed garbage
|
|
|
|
collection or memory profiling tools detect
|
|
|
|
unlinked memory correctly. This will make GLib
|
|
|
|
slightly slower.
|
2002-12-20 16:23:12 +01:00
|
|
|
[ --disable-gc-friendly is default ]
|
|
|
|
|
|
|
|
* --disable-mem-pools Do not cache freed objects. When specified,
|
|
|
|
GLib will immediately return freed memory
|
|
|
|
to the C library instead of keeping around
|
|
|
|
pools of free objects such as linked list
|
|
|
|
and hash table nodes. Specifying this
|
|
|
|
will make GLib slower in most cases, but it
|
|
|
|
will use less memory.
|
|
|
|
[ --enable-mem-pools is the default ]
|
|
|
|
|
|
|
|
* --disable-threads Do not compile GLib to be multi thread safe. GLib
|
2001-10-31 16:40:52 +01:00
|
|
|
will be slightly faster then. This is however not
|
|
|
|
recommended, as many programs rely on GLib being
|
|
|
|
multi thread safe.
|
2002-12-20 16:23:12 +01:00
|
|
|
[ --enable-threads is the default ]
|
2001-10-31 16:40:52 +01:00
|
|
|
|
2002-12-20 16:23:12 +01:00
|
|
|
* --with-threads=[none/posix/dce/solaris/win32] Specify a thread
|
2001-10-31 16:40:52 +01:00
|
|
|
implementation to use.
|
|
|
|
* 'posix' and 'dce' can be used interchangeable
|
|
|
|
to mean the different versions of posix
|
|
|
|
threads. configure tries to find out, which
|
|
|
|
one is installed.
|
|
|
|
* 'solaris' uses the native Solaris thread
|
|
|
|
implementation.
|
|
|
|
* 'none' means that GLib will be thread safe,
|
|
|
|
but does not have a default thread
|
|
|
|
implementation. This has to be supplied to
|
|
|
|
g_thread_init() by the programmer.
|
|
|
|
[ Determined by configure by default ]
|
|
|
|
|
2002-12-20 16:48:15 +01:00
|
|
|
* --enable-included-printf=[yes/no/auto] Specify whether to build using
|
2002-12-20 16:23:12 +01:00
|
|
|
the included copy of the Trio library
|
|
|
|
for string formatting functions like printf().
|
|
|
|
The default is 'auto', which means that
|
|
|
|
Trio will be used if configure detects
|
|
|
|
missing features in your system native
|
|
|
|
printf implementation.
|
|
|
|
|
2001-04-17 02:55:34 +02:00
|
|
|
Options can be given to the compiler and linker by setting
|
|
|
|
environment variables before running configure. A few of the more
|
|
|
|
important ones:
|
|
|
|
|
|
|
|
CC : The C compiler to use
|
|
|
|
CPPFLAGS : Flags for the C preprocesser such as -I and -D
|
|
|
|
CFLAGS : C compiler flags
|
|
|
|
|
|
|
|
The most important use of this is to set the
|
|
|
|
optimization/debugging flags. For instance, to compile with no
|
|
|
|
debugging information at all, run configure as:
|
|
|
|
|
|
|
|
CFLAGS=-O2 ./configure # Bourne compatible shells (sh/bash/zsh)
|
|
|
|
|
|
|
|
or,
|
|
|
|
|
|
|
|
setenv CFLAGS -O2 ; ./configure # csh and variants
|
|
|
|
|
|
|
|
|
|
|
|
Installation directories
|
|
|
|
========================
|
|
|
|
|
|
|
|
The location of the installed files is determined by the --prefix
|
|
|
|
and --exec-prefix options given to configure. There are also more
|
|
|
|
detailed flags to control individual directories. However, the
|
|
|
|
use of these flags is not tested.
|
|
|
|
|
|
|
|
One particular detail to note, is that the architecture-dependent
|
|
|
|
include file glibconfig.h is installed in:
|
|
|
|
|
2002-03-08 06:48:03 +01:00
|
|
|
$exec_prefix/lib/glib/include/
|
2001-04-17 02:55:34 +02:00
|
|
|
|
|
|
|
if you have a version in $prefix/include, this is out of date
|
|
|
|
and should be deleted.
|
|
|
|
|
2002-03-08 06:48:03 +01:00
|
|
|
.pc files for the various libraries are installed in
|
|
|
|
$exec_prefix/lib/pkgconfig to provide information when compiling
|
|
|
|
other packages that depend on GTK+. If you set PKG_CONFIG_PATH
|
|
|
|
so that it points to this directory, then you can get the
|
|
|
|
correct include flags and library flags for compiling a GLib
|
|
|
|
application with:
|
|
|
|
|
|
|
|
pkg-config --cflags glib-2.0
|
|
|
|
pkg-config --libs glib-2.0
|
2001-04-17 02:55:34 +02:00
|
|
|
|
2002-12-20 16:23:12 +01:00
|
|
|
|
|
|
|
Cross-compiling GLib
|
|
|
|
====================
|
|
|
|
|
|
|
|
Cross-compilation is the proceess of compiling a program or
|
|
|
|
library on a different architecture or operating system then
|
|
|
|
it will be run upon. GLib is slightly more difficult to
|
|
|
|
cross-compile than many packages because much of GLib is
|
|
|
|
about hiding differences between different systems.
|
|
|
|
|
|
|
|
These notes cover things specific to cross-compiling GLib;
|
|
|
|
for general information about cross-compilation, see the
|
|
|
|
autoconf info pages.
|
|
|
|
|
|
|
|
GLib tries to detect as much information as possible about
|
|
|
|
the target system by compiling and linking programs without
|
|
|
|
actually running anything; however, some information GLib
|
|
|
|
needs is not available this way. This information needs
|
|
|
|
to be provided to the configure script via a "cache file"
|
|
|
|
or by setting the cache variables in your environment.
|
|
|
|
|
|
|
|
As an example of using a cache file, to cross compile for
|
|
|
|
the "MingW32" Win32 runtine environment on a Linux system,
|
|
|
|
create a file 'win32.cache' with the following contents:
|
|
|
|
|
|
|
|
===
|
|
|
|
glib_cv_long_long_format=ll
|
|
|
|
glib_cv_stack_grows=no
|
|
|
|
===
|
|
|
|
|
|
|
|
Then execute the following commands:
|
|
|
|
|
|
|
|
===
|
|
|
|
PATH=/path/to/mingw32-compiler/bin:$PATH
|
|
|
|
chmod a-w win32.cache # prevent configure from changing it
|
|
|
|
./configure --cache-file=win32.cache --host=mingw32
|
|
|
|
===
|
|
|
|
|
|
|
|
The complete list of cache file variables follows. Most
|
|
|
|
of these won't need to be set in most cases.
|
|
|
|
|
|
|
|
Cache file variables
|
|
|
|
====================
|
|
|
|
|
|
|
|
glib_cv_long_long_format=[ll/q/I64]
|
|
|
|
|
|
|
|
Format used by printf and scanf for 64 bit integers. "ll" is
|
|
|
|
the C99 standard, and what is used by the 'trio' library
|
|
|
|
that GLib builds if your printf() is insufficiently capable.
|
|
|
|
Doesn't need to be set if you are compiling using trio.
|
|
|
|
|
|
|
|
glib_cv_stack_grows=[yes/no]
|
|
|
|
|
|
|
|
Whether the stack grows up or down. Most places will want "no",
|
|
|
|
A few architectures, such as PA-RISC need "yes".
|
|
|
|
|
|
|
|
glib_cv_working_bcopy=[yes/no]
|
|
|
|
|
|
|
|
Whether your bcopy can handle overlapping copies. Only needs to be set
|
|
|
|
if you don't have memmove. (Very unlikely)
|
|
|
|
|
|
|
|
glib_cv_sane_realloc=[yes/np]
|
|
|
|
|
|
|
|
Whether your realloc() conforms to ANSI C and can handle NULL as
|
|
|
|
the first argument. Defaults to "yes" and probably doesn't need to be set.
|
|
|
|
|
|
|
|
glib_cv_have_strlcpy=[yes/no]
|
|
|
|
|
|
|
|
Whether you have strlcpy that matches OpenBSD. Defaults to "no",
|
|
|
|
which is safe, since GLib uses a built-in version in that case.
|
|
|
|
|
|
|
|
glib_cv_va_val_copy=[yes/no]
|
|
|
|
|
|
|
|
Whether va_list can be copied as a pointer. If set to "no",
|
|
|
|
then memcopy will be used. Only matters if you don't have
|
|
|
|
va_copy or __va_copy. (So, doesn't matter for GCC.) Defaults
|
|
|
|
to "yes" which is slightly more common than "no".
|
|
|
|
|
|
|
|
glib_cv_rtldglobal_broken=[yes/no]
|
|
|
|
|
|
|
|
Whether you have a bug found in OSF/1 v5.0. Defaults to "no".
|
|
|
|
|
|
|
|
glib_cv_uscore=[yes/no]
|
|
|
|
|
|
|
|
Whether an underscore needs to be prepended to symbols when
|
|
|
|
looking them up via dlsym. Only needs to be set if your system
|
|
|
|
uses dlopen/dlsym.
|
|
|
|
|
|
|
|
ac_cv_func_posix_getpwuid_r=[yes/no]
|
|
|
|
|
|
|
|
Whether you have a getpwuid_r function (in your C library,
|
|
|
|
not your thread library) that conforms to the POSIX spec.
|
|
|
|
(Takes a 'struct passwd **' as the final argument)
|
|
|
|
|
|
|
|
ac_cv_func_nonposix_getpwuid_r=[yes/no]
|
|
|
|
|
|
|
|
Whether you have some variant of getpwuid_r that doesn't
|
|
|
|
conform to to the POSIX spec, but GLib might be able to
|
|
|
|
use (or might segfault.) Only needs to be set if
|
|
|
|
ac_cv_func_posix_getpwuid_r is not set. It's safest to set
|
|
|
|
this to "no".
|
|
|
|
|
|
|
|
glib_cv_use_pid_surrogate=[yes/no]
|
|
|
|
|
|
|
|
Whether to use a setpriority() on the PID of the thread as
|
|
|
|
a method for setting the priority of threads. This only
|
|
|
|
needs to be set when using POSIX threads.
|
|
|
|
|
|
|
|
ac_cv_func_printf_unix98=[yes/no]
|
|
|
|
|
|
|
|
Whether your printf() family supports Unix98 style %N$
|
|
|
|
positional parameters. Defaults to "no".
|
|
|
|
|
|
|
|
ac_cv_func_vsnprintf_c99=[yes/no]
|
|
|
|
|
|
|
|
Whether you have a vsnprintf() with C99 semantics. (C99 semantics
|
|
|
|
means returns the number of bytes that would have been written
|
|
|
|
had the output buffer had enough space.). Defaults to "no".
|