8

gmp と pbc の依存関係を使用して、Ubuntu 12.10 のソース コードから cpabe パッケージをコンパイルするのに数時間を費やしました。次のエラー メッセージは、Web の多くの人々の問題のようです (依存関係として libgmp のインストールが必要な他のパッケージをコンパイルする場合でも!)。それでも、実行可能な解決策が見つかりませんでした:

...
/usr/bin/ld: /usr/local/lib/libpbc.so: undefined reference to symbol '__gmpz_init'
/usr/bin/ld: note: '__gmpz_init' is defined in DSO /usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/libgmp.so so try adding it to the linker command line
/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/libgmp.so: could not read symbols: Invalid operation
collect2: ld returned 1 exit status
4

4 に答える 4

5

一部の人にとっては些細なことかもしれませんが、policy_lang.y の 67 行目にセミコロンがないため、コンパイルは次のように失敗します。

 policy_lang.y: In function ‘yyparse’:
 policy_lang.y:67:38: error: expected ‘;’ before ‘}’ token
 result: policy { final_policy = $1 }

67行目を次のように変更することで修正できます

 result: policy { final_policy = $1; }
于 2015-03-03T21:58:42.253 に答える
3

私のものは、Linux Mint 16用のMarAlaviのわずかなバリエーションでした:

  • ./configure -with-pbc-include=path -with-pbc-lib=pathpbc.h(とlibpbcがインストールされたパス)
  • make LDFLAGS="-lgmp -lpbc -lcrypto -L/usr/lib/x86_64-linux-gnu -lglib-2.0 -lbswabe -lgmp"
  • make install

" " に注意してください-lglib-2.0

于 2014-03-27T21:38:39.093 に答える
3

lgmp を追加する必要がありましたが、他のすべての使用ライブラリも同様にリンクする必要がありました。make コマンドを発行する際に LDFLAGS 環境変数でこれらのライブラリを指定することで、最終的に問題を解決しました。したがって、gmp、pbc、bswabe、またはその他の必要な依存関係をインストールした後のコンパイル手順は次のとおりです。

  • ./configure -with-pbc-include=path -with-pbc-lib=path (pbc.h と libpbc がインストールされたパス)

  • make LDFLAGS="-lgmp -lpbc -lcrypto -L/usr/lib/x86_64-linux-gnu -lglib -lbswabe -lgmp"

  • インストールする

于 2013-07-02T01:05:11.070 に答える
0

リンカーコマンドラインに追加してみてください

-lgmpエラーが示唆するように、リンク コマンド ラインに追加しようとしましたか?

于 2013-06-29T02:34:48.420 に答える