Các tài liệu GMP nói rằng liên kết tĩnh có thể cung cấp một cải tiến hiệu suất nhỏ.Lỗi khi liên kết tĩnh libgmp trên Linux
Tôi gặp sự cố khi nhận liên kết tĩnh libgmp trên các hệ thống Linux của mình. Tôi đã thu hẹp vấn đề tôi đang gặp phải một trường hợp thử nghiệm nhỏ.
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
Các nhị phân không tĩnh được biên dịch và liên kết mà không cần bất kỳ vấn đề, nhưng 'Hãy tĩnh' sản xuất:
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
Thư viện không tồn tại:
ch[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
Tôi cũng đã thử lgmp cho liên kết tĩnh, nhưng lỗi là như nhau.
Đây là tất cả trên Ubuntu 10.04 và 10.10 AMD64.
Một số người có thể khai sáng cho tôi về lỗi hiển nhiên mà tôi đang thực hiện?
Xin cảm ơn,
Chris.
Bạn đã thử sắp xếp lại sao cho các thư viện cần thiết là * sau * người dùng thư viện trên dòng lệnh? – ephemient