我是靠谱客的博主 飘逸音响,最近开发中收集的这篇文章主要介绍安装pbc包出现的问题及解决办法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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包出现的问题及解决办法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(67)

评论列表共有 0 条评论

立即
投稿
返回
顶部