Dokumenty GMP mówią, że łączenie statyczne może zapewnić niewielką poprawę wydajności.Błąd podczas statycznego łączenia libgmp w systemie Linux
Mam problem z pobieraniem statycznego linku do libgmp na moich systemach Linux. Zawęziłem problem związany z małą próbą testową.
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
Non-static binarny jest kompilowany i połączone bez żadnych problemów, ale 'Make statyczne' produkuje:
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
Biblioteka istnieje:
[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
Próbowałem również -lgmp dla statycznego linkowania, ale błąd jest taki sam.
To wszystko na Ubuntu 10.04 i 10.10 AMD64.
Czy ktoś może mnie oświecić na temat oczywistego błędu, który popełniam?
Dzięki,
Chris.
Czy próbowałeś zmienić kolejność tak, aby biblioteki były potrzebne * po * użytkownikach biblioteki w linii poleceń? – ephemient