我最后花了几个小时从Ubuntu 12.10中的源代码编译cpabe包,其中包含gmp和pbc依赖项.以下错误消息似乎是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
对于你们中的一些人来说这可能是微不足道的,但是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; }