Build GMP on 64bit Windows
1.1、安装
msys2 的主页地址:
http://www.msys2.org/
下载32位或64位,我这里 下载了64位
msys2-x86_64-20161025.exe
双击傻瓜式安装
1.2、更新软件包
开始菜单->MSYS2 64bit->MSYS2 MinGW 32-bit
剩下的工作都在这个bash shell下进行
查看软件包清单
$ pacman -Sl | grep gcc
mingw32 mingw-w64-i686-gcc 6.2.0-2 [已安装]
mingw32 mingw-w64-i686-gcc-ada 6.2.0-2
mingw32 mingw-w64-i686-gcc-fortran 6.2.0-2
mingw32 mingw-w64-i686-gcc-libgfortran 6.2.0-2 [已安装]
mingw32 mingw-w64-i686-gcc-libs 6.2.0-2 [已安装]
mingw32 mingw-w64-i686-gcc-objc 6.2.0-2
mingw64 mingw-w64-x86_64-gcc 6.2.0-2
mingw64 mingw-w64-x86_64-gcc-ada 6.2.0-2
mingw64 mingw-w64-x86_64-gcc-fortran 6.2.0-2
mingw64 mingw-w64-x86_64-gcc-libgfortran 6.2.0-2
mingw64 mingw-w64-x86_64-gcc-libs 6.2.0-2
mingw64 mingw-w64-x86_64-gcc-objc 6.2.0-2
msys gcc 5.3.0-3 [已安装]
msys gcc-fortran 5.3.0-3
msys gcc-libs 5.3.0-3 [已安装]
msys mingw-w64-cross-gcc 5.3.0-1
安装gcc
$ pacman -S mingw-w64-i686-gcc
警告:mingw-w64-i686-gcc-6.2.0-2 已经为最新 -- 重新安装
正在解决依赖关系...
正在查找软件包冲突...
软件包 (1) mingw-w64-i686-gcc-6.2.0-2
全部安装大小: 112.18 MiB
净更新大小: 0.00 MiB
:: 进行安装吗? [Y/n] Y
(1/1) 正在检查密钥环里的密钥 [#####################] 100%
(1/1) 正在检查软件包完整性 [#####################] 100%
(1/1) 正在加载软件包文件 [#####################] 100%
(1/1) 正在检查文件冲突 [#####################] 100%
(1/1) 正在检查可用硬盘空间 [#####################] 100%
:: 正在处理软件包的变化...
(1/1) 正在重新安装 mingw-w64-i686-gcc [#####################] 100%
查看gcc安装情况
$ gcc -v
Using built-in specs.
COLLECT_GCC=C:\msys64\mingw32\bin\gcc.exe
COLLECT_LTO_WRAPPER=C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/6.2./lto-wrapper.exe
Target: i686-w64-mingw32
Configured with: ../gcc-6.2./configure --prefix=/mingw32 --with-local-prefix=/mingw32/local --build=i686-w64-mingw32 --host=i686-w64-mingw32 --target=i686-w64-mingw32 --with-native-system-header-dir=/mingw32/i686-w64-mingw32/include --libexecdir=/mingw32/lib --enable-bootstrap --with-arch=i686 --with-tune=generic --enable-languages=c,lto,c++,objc,obj-c++,fortran,ada --enable-shared --enable-static --enable-libatomic --enable-threads=posix --enable-graphite --enable-fully-dynamic-string --enable-libstdcxx-time=yes --disable-libstdcxx-pch --disable-libstdcxx-debug --disable-isl-version-check --enable-lto --enable-libgomp --disable-multilib --enable-checking=release --disable-rpath --disable-win32-registry --disable-nls --disable-werror --disable-symvers --with-libiconv --with-system-zlib --with-gmp=/mingw32 --with-mpfr=/mingw32 --with-mpc=/mingw32 --with-isl=/mingw32 --with-pkgversion='Rev2, Built by MSYS2 project' --with-bugurl=https://sourceforge.net/projects/msys2 --with-gnu-as --with-gnu-ld --disable-sjlj-exceptions --with-dwarf2
Thread model: posix
gcc version 6.2. (Rev2, Built by MSYS2 project)
安装make
$ pacman -S make
警告:make-4.2.- 已经为最新 -- 重新安装
正在解决依赖关系...
正在查找软件包冲突... 软件包 () make-4.2.- 全部安装大小: 1.22 MiB
净更新大小: 0.00 MiB :: 进行安装吗? [Y/n] Y
(/) 正在检查密钥环里的密钥 [#####################] %
(/) 正在检查软件包完整性 [#####################] %
(/) 正在加载软件包文件 [#####################] %
(/) 正在检查文件冲突 [#####################] %
(/) 正在检查可用硬盘空间 [#####################] %
:: 正在处理软件包的变化...
(/) 正在重新安装 make [#####################] %
查看make安装情况
$ make -v
GNU Make 4.2.
为 x86_64-pc-msys 编译
Copyright (C) - Free Software Foundation, Inc.
许可证:GPLv3+:GNU 通用公共许可证第 版或更新版本<http://gnu.org/licenses/gpl.html>。
本软件是自由软件:您可以自由修改和重新发布它。
在法律允许的范围内没有其他保证。
2、编译GMP
2.1、下载gmp
https://gmplib.org/
Download the latest release of GMP
GMP 6.1. lz, bytes xz, bytes bz2, bytes
Main site, gmplib.org, via https gmp-6.1..tar.lz gmp-6.1..tar.xz gmp-6.1..tar.bz2
USA, ftp.gnu.org, via https gmp-6.1..tar.lz gmp-6.1..tar.xz gmp-6.1..tar.bz2
我这里下载了gmp-6.1.2.tar.xz版本
2.2、进入bash shell
开始菜单->MSYS2 64bit->MSYS2 MinGW 32-bit
2.3、解压
进入到gmp-6.1.2.tar.xz目录
$ tar -xvf gmp-6.1..tar
2.4、编译
进入到gmp-6.1.2解压的目录
$ cd gmp-6.1./
configure
$ ./configure
make
2.5、生成的库文件位置
.libs 目录下
libgmp.a
3、VS使用
3.1、如何使用gmp
拷贝libgmp.a和gmp.h到工程目录下
#include <gmp.h>
#pragma comment(lib, "libgmp.a")
#pragma comment(lib, "libgcc.a")
这里需要把libgcc.a链接进来,位置在C:\msys64\mingw32\lib\gcc\i686-w64-mingw32\6.2.0目录中
3.2、示例,生成两个素数p,q
#include "stdafx.h"
#include <gmp.h>
#pragma comment(lib, "libgmp.a")
#pragma comment(lib, "libgcc.a") int _tmain(int argc, _TCHAR* argv[])
{
gmp_randstate_t grt;
gmp_randinit_default(grt); //设置随机数生成算法为默认
gmp_randseed_ui(grt, time(NULL)); //设置随机化种子为当前时间,这几条语句的作用相当于标准C中的srand(time(NULL)); mpz_t key_p, key_q;
mpz_init(key_p);
mpz_init(key_q); //一个mpz_t类型的变量必须在初始化后才能被使用 mpz_urandomb(key_p, grt, );
mpz_urandomb(key_q, grt, ); //随机生成一个在0~2^1024-1之间的随机数 if(mpz_even_p(key_p))
mpz_add_ui(key_p, key_p, );
if(mpz_even_p(key_q))
mpz_add_ui(key_q, key_q, ); //如果生成的随机数为偶数,则加一 while(!mpz_probab_prime_p(key_p, ) > ) //逐个检查比p大的奇数是否为素数
mpz_add_ui(key_p, key_p, );
while(!mpz_probab_prime_p(key_q, ) > )
mpz_add_ui(key_q, key_q, ); gmp_printf("%ZX\n", key_p); //以十六进制的形式输出生成的素数
gmp_printf("%ZX\n", key_q); return ;
}
Build GMP on 64bit Windows的更多相关文章
- Sublime Text 3 Build 3047 32bit/64bit 简体中文安装破解版
Sublime Text 3 Build 3047 32bit/64bit 简体中文安装破解版 Sublime Text 3 Build 3047 32bit 简体中文安装破解版下载:http://y ...
- Installing Forms Developer 10g and Reports 32-bit on 64-bit Windows versions(win7 or win10)
E-Business Suite 12.1 and 12.2 require Forms Developer 10g and Reports Designer 10g. Forms Develope ...
- 转:Heap spraying high addresses in 32-bit Chrome/Firefox on 64-bit Windows
转:https://blog.skylined.nl/20160622001.html,June 22nd, 2016 In my previous blog post I wrote about m ...
- Build FTP Server on Windows
1. Use the self-ftp component service with windows control panel / program / start or close windows ...
- Error:(1, 0) Your project path contains non-ASCII characters. This will most likely cause the build to fail on Windows. Please move your project to a different directory. See http://b.android.com/9574
这个一般是因为你打开的项目所在的目录存在中文,把项目换到全英文目录下就没问题了
- Compile for Windows on Linux(交叉编译,在Linux下编译Windows程序),以OpenSSL为例
OpenSSL for Windows In earlier articles, we have looked at how to create a gcc build environment on ...
- Build Instructions (Windows) – The Chromium Projects
转自:http://121.199.54.6/wordpress/?p=1156 原始地址:http://www.chromium.org/developers/how-tos/build-instr ...
- 如何完全卸载OneDrive (Windows 10 64bit)
原文参考 http://lifehacker.com/how-to-completely-uninstall-onedrive-in-windows-10-1725363532 To complete ...
- [Windows核心编程]32bit程序在64bit操作系统下处理重定向细节[1]
这段时间,都在做Ring3层的普通32bit程序兼容64bit操作系统的代码修改,在此记录修改和学习心德.编程领域太广, 任何人经历有限,本人不是专家,所以我一贯原则是: 用到的时候,才去研究,在去记 ...
随机推荐
- AGC 030B.Tree Burning(贪心)
题目链接 \(Description\) 有一个长为\(L\)的环,上面有\(n\)棵树,坐标分别为\(a_i\).初始时在原点. 每次你可以选择顺时针或逆时针走到第一棵没有被烧掉的树,停在这个位置, ...
- 2028 ACM Lowest Common Multiple Plus
题目:http://acm.hdu.edu.cn/showproblem.php?pid=2028 思路:最一想到的就是暴力求解,从1开始一直到最后的答案,一直来除以给出的数列的数,直到余数为0:当然 ...
- Java 构造器 考虑用静态构造方法代替构造器
类可以提供一个公有的静态工厂方法,它是一个返回类的实例的静态方法.静态工厂方法与设计模式中的工厂方法模式不同. 优势: 静态工厂方法与构造器不同的第一大优势在于,它们有名称.一个类只能有一个带有指定签 ...
- PAT Basic 1006
1006 换个格式输出整数 (15 分) 让我们用字母 B 来表示“百”.字母 S 表示“十”,用 12...n 来表示不为零的个位数字 n(<10),换个格式来输出任一个不超过 3 位的正整数 ...
- js,css文件更新之后,浏览器端还有缓存,久久不能消除
解决方案,每次更新之后修改下配置信息 /// <summary> /// VersionInfo 版本信息 /// </summary> public static class ...
- 使用 OpenSessionInViewFilter 配置加载
1.使用 OpenSessionInViewFilter
- CSS关键词的值-currentColor关键字提示文字(当前颜色)
currentColor关键字 currentColor关键字相当于一个CSS变量. currentColor关键字与CSS变量也是有区别的: (1)他只可以能接受<color>值的地方使 ...
- Office Web Apps 2013 修改Excel在线查看文件大小限制
前言 最近搭建了一个OWA 2013环境,帮客户实现在线查看Excel文档,不过,使用过程中出现了错误,文件大小超过10MB就无法预览了,查了好久,发现需要使用PowerShell命令进行修改. 1. ...
- MyBatis(四):mybatis中使用in查询时的注意事项
准备工作 1)创建测试表jobitem CREATE TABLE "jobitem" ( "id" ) NOT NULL AUTO_INCREMENT COMM ...
- Switch语句的参数是什么类型的?
在Java5以前,switch(expr)中,exper只能是byte,short,char,int类型. 从Java5开始,java中引入了枚举类型,即enum类型. 从Java7开始,exper还 ...