Node: Libraries, Next: Contributed units, Previous: Debugger, Up: Installing GPC

#### What additional libraries should I have?

You will need certain additional libraries when you compile some of the units. These can be found in the directory http://www.gnu-pascal.de/libs/.

Currently, there are the following libraries:

gmp
  Arithmetic for integers, rationals and real numbers with arbitrary size and precision. Used by the GMP unit.
rx
  Regular expression matching and substitution. Used by the RegEx unit.
ncurses
PDCurses
  Screen handling. Used by the CRT unit. Depending on your system, you have the following choices:

  Unix: You can compile terminal applications with ncurses and applications that run in an X11 window with PDCurses (though terminal applications can, of course, also run in an xterm under X11). ncurses is used by default. If you want to use PDCurses (a.k.a. XCurses), give the option `-DX11` when compiling CRT.

  Dos with DJGPP and MS-Windows with mingw: Only PDCurses is available and will be used by default.

  MS-Windows with Cygwin: PDCurses and ncurses are available. PDCurses is used by default. If you want to use ncurses, give the option `-DUSE_NCURSES` when compiling CRT.

  Other systems: Please see the `README`s and installation instructions of PDCurses and ncurses to find out which one(s) can be built on your system. See the conditionals at the end of crt.inc and crtc.h (and change them if necessary) on which library is used by default.

intl
  Internationalization. Used by the Intl unit. On some systems, it is part of the system library (libc).
ElectricFence
  This library is not used by any GPC unit. It is a debugging tool to assist you in finding memory allocation bugs. To use it, just link it to your program, either on the command line (`-lefence`) or in the source code (`{$L efence}`) which you might want to put into an `{$ifdef DEBUG}` or similar since using libefence is only recommended for debugging.

The source code of the libraries is available in the main `libs` directory. Most libraries come with one or several patches which should be applied before compiling them.

Binaries for some platforms are available in the `binary/`platform`` subdirectories. If you compile the libraries for other platforms, be invited to make the binaries available to us for distribution on the web site.

There are also the following files:

`terminfo-linux.tar.gz`
  This is a patch to enable ncurses programs to make use of the ability of Linux 2.2 and newer kernels to produce a block cursor when needed. The present patch can be installed without recompiling anything, just by copying some files into place. More details can be found in the `README` file included in this archive. The patch will not do any harm on older kernels. Please note that not only on Linux machines it is useful to install the patch. Installing them on any other machine will allow users who telnet in from a Linux console to profit from the block cursor capability. Besides, some Unix systems have installed older Linux terminfo entries or none at all, so it's a good thing, anyway, to give them a current version. The patch is included in the terminfo database of ncurses 5.0, so if you install ncurses 5.0 (source or binary), you don't need to get the patch separately. But you can install it on a system with an older ncurses version if you don't feel like upgrading ncurses altogether.
`tsort-2.9i.zip`
  A little utility (extracted from util-linux-2.9i, but not Linux specific), needed for the configuration of the rx library. You need it only if you compile rx yourself (and if it's not already present on your system), not when using a rx binary.