I documenti GMP dicono che il collegamento statico può fornire un piccolo miglioramento delle prestazioni.Errore durante il collegamento statico di libgmp su Linux
Sto riscontrando un problema nel far legare staticamente libgmp sui miei sistemi Linux. Ho ristretto il problema che sto affrontando in un minuscolo test case.
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
Il binario non statico viene compilato e collegato senza problemi, ma 'Make statica' 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 libreria esiste:
[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
Ho anche provato -lgmp per il collegamento statico, ma l'errore è lo stesso.
Questo è tutto su Ubuntu 10.04 e 10.10 AMD64.
Qualcuno può illuminarmi sull'errore evidente che sto facendo?
Grazie,
Chris.
Hai provato a riordinare in modo che le librerie necessarie siano * dopo * gli utenti di libreria sulla riga di comando? – ephemient