'make check' failure with disabled shared libraries on Mac OSX 10.6

Torbjorn Granlund tg at gmplib.org
Sun Nov 28 12:33:02 CET 2010

listboss <listboss at gmail.com> writes:

  $ ./config.guess
  $ ./configure --disable-shared
  $ make; make check
  libtool: link: gcc -std=gnu99 -m32 -O2 -pedantic -fomit-frame-pointer
  -mtune=pentium3 -march=pentium3 -o t-bswap t-bswap.o
  ./.libs/libtests.a /Users/hamid/Downloads/gmp-5.0.1/.libs/libgmp.a
  Undefined symbols:
    "_calling_conventions_save_esi", referenced from:
        _calling_conventions in libtests.a(x86call.o)
        _calling_conventions in libtests.a(x86call.o)
These a internal GMP calls that somehow go wrong.

Mac OS X is the only surviving platform that still use a variant of the
old aout executable format, which prefixes symbols with an underscore.

GMP is set up to detect this, to appropriately prefix symbols in its
assembly code.

This seems to fail on your system.  How it can work in a shared build
but not a static one is a mystery.  Perhaps you have a GMP install in
some standard system lib directory (which would be something like
/lib. /usr/lib, or /usr/local/lib on non-Apple systems, while Apple like
zany prefixes like /private).  The shared build then might link to that
libgmp.so (or whatever shared libs are called on Apple systems) and not
your newly compiler one.

To be able to understand this, we need:

1. The output printed to stdout from your 'configure' command, including
   the command flags you use (please repeat them, even if you stated them
   above).  Please use a static build.

2. The compressed (bzip2, gzip) contents of config.log.

3. Send the output of 'make check' to a file.  Then look for the m4
   invocation for x86call.asm.  Please repeat that manually by
   cut-and-paste, and send us the output.


More information about the gmp-discuss mailing list