Node:Notes for Package Builds, Next:Notes for Particular Systems, Previous:ABI and ISA, Up:Installing GMP
GMP should present no great difficulties for packaging in a binary distribution.
Libtool is used to build the library and -version-info
is set
appropriately, having started from 3:0:0
in GMP 3.0. The GMP 4 series
will be upwardly binary compatible in each release and will be upwardly binary
compatible with all of the GMP 3 series. Additional function interfaces may
be added in each release, so on systems where libtool versioning is not fully
checked by the loader an auxiliary mechanism may be needed to express that a
dynamic linked application depends on a new enough GMP.
An auxiliary mechanism may also be needed to express that libgmpxx.la
(from --enable-cxx
, see Build Options) requires libgmp.la
from the same GMP version, since this is not done by the libtool versioning,
nor otherwise. A mismatch will result in unresolved symbols from the linker,
or perhaps the loader.
Using DESTDIR
or a prefix
override with make install
and
a shared libgmpxx
may run into a libtool relinking problem, see
Known Build Problems.
When building a package for a CPU family, care should be taken to use
--host
(or --build
) to choose the least common denominator among
the CPUs which might use the package. For example this might necessitate
i386
for x86s, or plain sparc
(meaning V7) for SPARCs.
Users who care about speed will want GMP built for their exact CPU type, to
make use of the available optimizations. Providing a way to suitably rebuild
a package may be useful. This could be as simple as making it possible for a
user to omit --build
(and --host
) so ./config.guess
will
detect the CPU. But a way to manually specify a --build
will be wanted
for systems where ./config.guess
is inexact.
Note that gmp.h
is a generated file, and will be architecture and ABI
dependent.