在windows 64位环境下编译pbc

本文档详细介绍了如何在64位Windows环境下编译PBC库,包括安装mingw-w64、msys,配置环境,下载PBC和gmp源码,以及解决编译过程中遇到的问题,如添加库路径、处理头文件位置,最终成功生成64位dll文件。
想要使用PBC库,但是PBC库的源码是GNU的,也就是需要GCC等一系列工具进行编译。如果想在windows上跑,还是要花点功夫的。
事实上,官方提供了windows平台的dll文件,但是这是32位的,我的机子是64位的,所以需要重新编译过。
首先需要下载的工具:
 mingw-w64(要靠他在windows平台下执行gcc,下载完后要把bin目录地址添加到系统路径中)
 msys(模拟linux环境)
 编辑 msys 下 /etc/fstab 加入 c:/mingw64 /mingw (参考了http://blog.sina.com.cn/s/blog_6125d067010168dt.html)
	PBC源码(从http://crypto.stanford.edu/pbc/download.html选择源码包)
	gmp源码(是PBC的依赖https://gmplib.org/#DOWNLOAD)
	dependence worker (这个工具帮了我很大的忙,因为原来我使用的是官方提供的dll文件,但是jna链接不上,使用了这个软件才知道原来官方的是32位的)
	准备工作完成后,正式开始编译
	首先,执行msys/msys.bat,弹出一个控制台窗口,进入gmp目录。执行./configure --enable-shared --disable-static,这步将gmp源代码编译成动态链接,网上也有编译成静态链接的,参考http://blog.csdn.net/wangsifu2009/article/details/7299884。然后执行make,最后是make install,执行完了,动态链接也生成了,并被放到默认的路径中。
	接下来编译pbc,同样的首先执行./configure --enable-shared --disable-static,运行后报错了,仔细一看提示找不到-lgmp,可以按它的提示help一下。发现它需要我们将库路径添加到LDFLAGS环境变量中,也就是执行export LDFLAGS="-L/usr/local/lib",/usr/local/lib是gmp的自动安装的路径 。接着执行./configure --enable-shared --disable-static,然后make,发现报错了,是因为没找到gmp.h文件,为了方便,我直接将h文件拷到pbc源代码的目录下面,然后make,成功,make install。
	上述步骤完成后,生成的两个dll文件都会在msys的local/bin中,可以都拷到system32中供JNA调用。拷贝之前可以用dependence worker检查一下依赖正不正确。
	这过程中我也产生些问题,比如说我从官网下的32位mingw编译代码为什么也是32位的,我不是在64位的机子上跑的吗。将gmp.h文件直接拷到代码文件夹下太低端了,应该有方式来指定参数。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值