ubuntu安装pbc库
pbc中的gmp库和pbc库下载链接如下:
pbc下载
密码:gh40
1.安装gcc库
首先查看一下是否安装gcc库,若没有安装则无法运行c语言代码
gcc -v
运行上述指令若是没有弹出版本号,则需要安装gcc库
进入管理员账号后再进行安装gcc库
# 进入管理员账号命令
sudo su # 输入命令后再输入开机密码即可进入root用户
gcc安装指令:
sudo apt install gcc
安装好之后再使用下列命令查看是否成功
成功的话会显示gcc的版本号
gcc -v
2.下载依赖库:m4、flex、bison
sudo apt-get update
sudo apt-get install m4
sudo apt-get install flex
sudo apt-get install bison
3.安装gmp库
下载地址https://gmplib.org/
解压并安装
gmp-6.3.0.tar.xz
这个文件
命令如下:
# 解压gmp压缩包
tar xvJf gmp-6.3.0.tar.xz
进入gmp目录并运行configure
文件
ls # 查看当前目录下的文件
cd gmp-6.3.0 # 进入gmp-6.3.0这个目录
ls # 查看当前目录下的文件,并找到configure这个文件# 执行configure这个文件
./configure
没有make需要安装make
make
make check
apt install make
make -v # 查看make版本
4.安装pbc库
安装好下面操作后需要回到Desktop
那个目录
下载地址http://crypto.stanford.edu/pbc/download.html
下载并解压下面这个文件
pbc-1.0.0.tar.gz
命令如下:
# 返回上一级目录
cd ..
# 解压pbc压缩包
tar -xzvf pbc-0.5.14.tar.gz# 进入pbc-0.5.14目录
cd pbc-0.5.14
ls # 查看当前目录文件# 执行configure文件
./configure
安装make
make
make check
sudo make install
pbc库中make库无法安装问题
问题是找不到 gmp库
解决方法
把 /usr/local/lib
写进系统默认搜索路径,一次配置,永久生效:
# 1. 让动态链接器认识 /usr/local/lib
echo "/usr/local/lib" | sudo tee /etc/ld.so.conf.d/gmp.conf
sudo ldconfig# 2. 让 pkg-config 认识
echo "export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:\$PKG_CONFIG_PATH" >> ~/.bashrc
source ~/.bashrc
再进 pbc 目录:
./configure
make
sudo make install
一键验证是否找到 GMP
pkg-config --modversion gmp
如果能输出版本号(例如 6.3.0
),就说明路径已正确,再 ./configure
一定不会报 “gmp library not found”。
5.验证pbc是否装成功
首先执行下面的指令建立文件夹和c语言文件
# 创建新目录
mkdir -p code
# 查看当前目录文件
ls
# 进入code目录
cd code# 创建C语言文件
nano test.c
在test.c
文件中写入下面代码
#include<pbc/pbc.h>
int main(void)
{printf("pbc test\n");return 0;
}
写完代码后按 Ctrl+X
退出程序
# 编译
gcc test.c -o test# 运行
./test
引用pbc库报错
解决方法
新建.conf文件
cd /etc/ld.so.conf.d
sudo vi libpbc.conf
在文件中添加路径
/usr/local/lib
刷新cache
sudo ldconfig
以上都改好了可能还会像我一样报错,就在修改
gcc test.c -lgmp -lpbc -I/usr/local/include/pbc -o test
再运行test.c程序就没有问题了
全局设置pbc
-
把头文件目录软链到系统默认 include
sudo ln -s /usr/local/include/pbc /usr/include/pbc
-
把库文件目录写进系统 linker 配置
echo "/usr/local/lib" | sudo tee /etc/ld.so.conf.d/pbc.conf sudo ldconfig
3.测试
把测试命令换成 带 main 的空程序即可:
gcc -x c - -lpbc -lgmp -o /dev/null <<<'int main(void){ return 0; }' && echo OK
只要终端输出:
OK
就说明:
- 头文件目录已全局可见
- 库文件目录已全局可见
- 链接器能找到
libpbc.so
与libgmp.so
注:在引入头文件时注意加上路径 :pbc/pbc.h
#include<pbc/pbc.h>
int main()
{printf("pbc 功能测试\n");return 0;
}