Linux 安装 GMP 依赖

发布于 2020-09-14  83 次阅读


GMP全称是GNU Multiple Precision Arithmetic Library,即GNU高精度算术运算库,在现代密码学的计算中十分关键。

什么是GMP?
GMP是一个用于任意精度算术的免费库,可处理带符号整数,有理数和浮点数。除了运行GMP机器中的可用内存所暗示的精度外,对精度没有实际限制。GMP具有丰富的功能集,并且这些功能具有常规接口。
GMP的主要目标应用程序是密码学应用程序和研究,Internet安全应用程序,代数系统,计算代数研究等
GMP经过精心设计,无论是小型操作数还是大型操作数,都应尽可能快。通过使用全字作为基本算术类型,使用快速算法,针对许多CPU的最常见内部循环使用经过高度优化的汇编代码并总体上强调速度,可以实现速度。
GMP的第一版发布于1991年。它不断开发和维护,每年大约发布一次新版本。
从版本6开始,GMP在GNU LGPL v3 和GNU GPL v2双重许可下分发 。这些许可使该库可以免费使用,共享和改进,并允许您传递结果。GNU许可证赋予了自由,但也对非自由程序的使用设置了严格的限制。
GMP是GNU项目的一部分。有关GNU项目的更多信息,请参见GNU官方网站。
GMP的主要目标平台是Unix类型的系统,例如GNU / Linux,Solaris,HP-UX,Mac OS X / Darwin,BSD,AIX等。它还可以在Windows上以32位和64-位模式。

摘自GMP官网

依赖的安装:官网下载,手动安装。这里我们以 Centos7 为例

下载安装包

进入官网下载最新安装包,这里我们下载的是 gmp-6.2.0.tar.xz

本站下载地址:https://xiabee.cn/files/TOOLS/gmp-6.2.0.tar.xz

然后解压:

xz -d gmp-6.2.0.tar.xz  
tar xzf gmp-6.2.0.tar 
cd gmp-6.2.0 

安装依赖

安装GMP 之前需要先安装m4 ,不然会有各种蜜汁报错......不过m4可以直接包管理器安装

sudo yum install m4

添加链接

configure一下,同时要加上 --enable-cxx命令,否则不能使用c++库gmpxx.h

./configure --enable-cxx

编译运行

make
make check
sudo make install

这个时候理论上已经安装好了,我们写一个C语言程序试试:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <gmp.h>

int main()
{
        mpz_t a,b;

        mpz_init(a);
        mpz_init(b);

        mpz_init_set_ui(a, 2);
        mpz_pow_ui(b, a, 1000);
        gmp_printf("b = %Zd\n", b);

        mpz_clear(a);
        mpz_clear(b);

        return 0;
}
// 计算2的1000次方

编译运行:

gcc -o test test.c -lgmp
# 使用-l命令,寻找gmp链接库

./test
# 执行test文件

样例程序输出:

b = 10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376

然后就可以去暴算现代密码学了