Los documentos GMP dicen que la vinculación estática puede proporcionar una pequeña mejora en el rendimiento.Error al vincular estáticamente libgmp en Linux
Tengo un problema al conectar estáticamente libgmp en mis sistemas Linux. He reducido el problema que tengo a un pequeño caso de prueba.
gmptest.c
#include <gmp.h>
int main(int argc, char** argv) {
mpz_t foo;
mpz_init(foo);
return 0;
}
Makefile:
all: clean gmptest static
clean:
rm -f *.s
rm -f *.o
rm -f gmptest
rm -f static-gmptest
gmptest: Makefile gmptest.c
gcc -std=c99 -O3 -lgmp gmptest.c -o gmptest
static: clean Makefile gmptest.c
gcc -std=c99 -O3 -static /usr/lib/libgmp.a gmptest.c -o static-gmptest
El binario no estático se compila y se enlaza sin ningún problema, pero 'Hacer estática' produce:
gcc -std=c99 -O3 -static /usr/lib/libgmp.a gmptest.c -o static-gmptest
/tmp/ccWSFke9.o: In function `main':
gmptest.c:(.text+0x8): undefined reference to `__gmpz_init'
collect2: ld returned 1 exit status
make: *** [static] Error 1
La biblioteca existe:
[email protected]:~/Dropbox/static$ ls -lA /usr/lib/libgmp.a
-rw-r--r-- 1 root root 1041666 2010-02-26 13:20 /usr/lib/libgmp.a
También he intentado -lgmp para la vinculación estática, pero el error es el mismo.
Todo esto en Ubuntu 10.04 y 10.10 AMD64.
¿Puede alguien aclararme el error obvio que estoy cometiendo?
Gracias,
Chris.
¿Ha intentado reordenar para que las bibliotecas necesarias sean * después de * users-of-library en la línea de comandos? – ephemient