GMPのドキュメントでは、静的リンクを使用するとパフォーマンスが少し改善される可能性があります。Linuxでlibgmpを静的にリンクするときのエラー
Linuxシステムでlibgmpを静的にリンクさせるのに問題があります。私は小さなテストケースが必要な問題を絞り込んだ。
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
非静的バイナリをコンパイルおよびリンク何の問題もなく、しかし '静的ください' が生成されます。
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
ライブラリは存在します:
[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
静的なリンクでも-lgmpを試しましたが、エラーは同じです。
これは、すべてUbuntu 10.04および10.10 AMD64上にあります。
私が作っている明らかなエラーについては、いくつか教えていただけますか?
おかげで、
クリス。
コマンドラインでライブラリが* users * of libraryになるように並べ替えを試みましたか? – ephemient