1

Ubuntu 12.04 (64 ビット)で cpabe-0.11ツールキット/ライブラリを「作成」しようとすると、次のエラーが発生します。libgmp を含むすべての必要なライブラリがシステムに正しくインストールされている。

/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/4.6.1/../../../../lib/libpbc.so: undefined reference to symbol '__gmpz_clear'
/usr/bin/ld: note: '__gmpz_clear' is defined in DSO /usr/lib/libgmp.so.3 so try adding it to the linker command line
/usr/lib/libgmp.so.3: could not read symbols: Invalid operation
collect2: ld returned 1 exit status
make: *** [cpabe-setup] Error 1
4

1 に答える 1

3

だから私はついにこれを解決しました。基本的に、libgmpがmakeでリンクしていない何らかの理由でエラーbczが発生していました(これがエラーの意味です)。しかし、./configure を実行して作成された Makefile を確認すると、次のように書かれていました。

...blah blah blah ...
LDFLAGS = -O3 -Wall \
        -lglib-2.0   \
        -Wl,-rpath /usr/local/lib -lgmp \
        -Wl,-rpath /usr/local/lib -lpbc \
        -lbswabe \
        -lcrypto -lcrypto
... blah blah blah ...

ご覧のとおり、libgmp は LDFLAGS に記載されています。多くの混乱が続いた。しばらくして、気まぐれで、Makefile に次の変更を試みました:-

LDFLAGS = -O3 -Wall \
        -lglib-2.0   \
        -Wl,-rpath /usr/local/lib -lgmp \
        -Wl,-rpath /usr/local/lib -lpbc \
        -lbswabe \
        -lcrypto -lcrypto \
        -lgmp

だから今、いくつかの奇妙な理由で、それはうまくコンパイルされます。

于 2012-04-30T12:28:51.010 に答える