概述
1.安装pcb的依赖
注意都是在sudo su下进行安装编译
1).安装m4、flex、bison
apt-get install m4
apt-get install flex
apt-get install bison
在百度经验上看到的安装M4,然后总是找不到包,改成小写果然通过了。
2).安装配置gmp
GMP库下载地址如下:https://gmplib.org/
我用的是gmp-6.1.2.tar.lz下载并解压
lzip gmp-6.1.2.tar.lz
没有lzip的还要安装一下lzip
apt-get install lzip
然后在terminal里进入解压后的文件夹进行安装,方法如下
./configure
make
make check
make install
2.Pbc library库安装
去https://crypto.stanford.edu/pbc/download.html下载
我用的是pbc-0.5.14.tar.gz
下载并解压(gzip)在~/workspace/pbc-0.5.14/param/a.param
在terminal里进入解压文件夹安装,方法如下:
./configure
make
make install
这时安装的库文件位置在/usr/local/lib
安装的头文件在 /usr/local/include
3.Pbc library库安装验证 :
随便编写一个pbc的程序存为foo.c
#include "pbc.h"
int main(void) {
/*call PBC functions */
printf("PBC Test Success!!n");
return 0;
}
如果这样在terminal终端下键入如下代码 gcc -o foo foo.c 应该会报错
1).ldconfig
首先把库文件添加到可以被找到的路径中
来自: http://man.linuxde.net/ldconfig(竟然国内的网上不去)
library在/usr/local/lib
下面,这时就需要在/etc/ld.so.conf
下面加一行/usr/local/lib
,保存过后ldconfig一下
2).编译,带上头文件的位置
gcc foo.c -o foo -I /usr/local/include/pbc
./foo
okay了,如果有谁能告诉我怎样添加头文件,不要每次做程序都添加就好啦!
3)如果出现undefined问题
本以为okay了,发现直接用bls的例子上述编译还是没能成功
直接用上述方法编译还是有问题出现了
/tmp/ccD5fsRV.o: In function `element_pow_zn':
bls.c:(.text+0x13b): undefined reference to `__gmpz_init'
bls.c:(.text+0x171): undefined reference to `__gmpz_clear'
/tmp/ccD5fsRV.o: In function `pbc_demo_pairing_init':
bls.c:(.text+0x479): undefined reference to `pbc_die'
bls.c:(.text+0x4bc): undefined reference to `pbc_die'
bls.c:(.text+0x4eb): undefined reference to `pairing_init_set_buf'
bls.c:(.text+0x4fe): undefined reference to `pbc_die'
/tmp/ccD5fsRV.o: In function `main':
bls.c:(.text+0x63b): undefined reference to `element_printf'
bls.c:(.text+0x663): undefined reference to `element_printf'
bls.c:(.text+0x69c): undefined reference to `element_printf'
bls.c:(.text+0x6ce): undefined reference to `element_printf'
bls.c:(.text+0x707): undefined reference to `element_printf'
bls.c:(.text+0x723): undefined reference to `pbc_malloc'
bls.c:(.text+0x751): undefined reference to `element_to_bytes_compressed'
bls.c:(.text+0x7ce): undefined reference to `element_from_bytes_compressed'
bls.c:(.text+0x7e7): undefined reference to `element_printf'
bls.c:(.text+0x7ee): undefined reference to `pbc_free'
bls.c:(.text+0x833): undefined reference to `element_printf'
bls.c:(.text+0x86c): undefined reference to `element_printf'
bls.c:(.text+0x8bb): undefined reference to `pbc_malloc'
bls.c:(.text+0x8e9): undefined reference to `element_to_bytes_x_only'
bls.c:(.text+0x966): undefined reference to `element_from_bytes_x_only'
bls.c:(.text+0x97f): undefined reference to `element_printf'
bls.c:(.text+0xa1b): undefined reference to `pbc_free'
bls.c:(.text+0xb01): undefined reference to `pairing_clear'
collect2: error: ld returned 1 exit status
知道还是由于链接的问题,但是所有方法都试过了,只能按照别人的来了。
#include <stdio.h>
#include "/usr/local/include/pbc/pbc.h" //必须包含头文件pbc.h
要么头文件中加上pbc.h的具体位置,然后:
gcc bls.c -o bls -L. -lpbc -lgmp
./bls < ~/workspace/pbc-0.5.14/param/a.param
要么头文件只包括pbc.h,然后:
gcc bls.c -o bls -L. -lpbc -lgmp -I /usr/local/include/pbc
./bls < ~/workspace/pbc-0.5.14/param/a.param
最后
以上就是飘逸音响为你收集整理的安装pbc包出现的问题及解决办法的全部内容,希望文章能够帮你解决安装pbc包出现的问题及解决办法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复