2011-11-08 32 views
5

GMP belgeleri, statik bağlamanın küçük bir performans artışı sağlayabileceğini söylüyor.Linux'ta libgmp statik olarak bağlanırken hata oluştu

Linux sistemlerimde statik olarak bağlantı kurabilmem için bir sorun yaşıyorum. Sorunları daralttım, küçük bir test vakasına gidiyorum.

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 

statik olmayan ikili 'statik Yap' derlenmiş ve herhangi bir sorun olmadan bağlantılı, ancak üretir:

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 

Kitaplık var:

[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 

Ayrıca, statik bağlantı için denedim, ancak hata aynıdır.

Bu, Ubuntu 10.04 ve 10.10 AMD64'tür.

Bazıları beni yaptığım bariz hatayla aydınlatabilir mi?

Teşekkürler,

Chris.

+1

Yeniden sıralamayı denediniz mi, böylece kütüphaneler gerekli * komut satırındaki kütüphane kullanıcılarından * sonra? – ephemient

cevap

9

kütüphaneler her zaman iyi sırayla bağlantılı olmalıdır beri

gcc -std=c99 -O3 -static gmptest.c -lgmp -o static-gmptest 

deneyin ve programın sonrasında veya bunları kullanarak dosyaları nesne.

+0

Teşekkürler, bağlantı sırası buydu. – fadedbee

+0

Bu, C/C++ için yeni olanlara oldukça sık görülür. Gelecekte bir çeşit uyarı ekleyeceklerini merak ediyorum. Kesinlikle çok zaman kazandırabilir. – Jendas

İlgili konular