在Ubuntu上安装NTL库以及编译测试

文章目录

    • 介绍:
    • 步骤:
            • 0. 下载前的准备
            • 1. 下载GMP并解压
            • 2. 下载NTL并解压
            • 3. 对GMP进行编译
            • 4. 对NTL进行编译
    • 编译测试:
    • 关于wsl下载和文件权限:
    • 参考资料:

介绍:

NTL是一个高性能的,可移植的c++库,提供任意长度整数的数据结构和算法;对于整数和有限域上的向量、矩阵和多项式;并且适用于任意精度的浮点运算。我们在Ubuntu(我使用的是Windows下的子系统wsl,但是应该是一样的)

步骤:

0. 下载前的准备

首先我们要确保必须有g++ 和 m4
g++: sudo apt-get install g++
m4: sudo apt-getinstall m4
确认安装:g++ --vm4 --v

1. 下载GMP并解压

GMP网站:https://gmplib.org/,这里我下载的是当时最新的版本gmp-6.2.1。
下载解压过程不再赘述,我是在wsl里面所以很方便,如果大家可以使用图形化界面也会很方便,使用命令行下载的话就自己去百度一下,我也不懂。

2. 下载NTL并解压

NTL网站:https://libntl.org/download.html,这里我下载的还是当时最新的版本ntl-11.5.1

3. 对GMP进行编译

首先我们把刚刚下载好的放到一起嗷。如下图所示:
在这里插入图片描述
然后进入gmp这个文件夹
一条一条依次输入

./configure

make

make check

sudo make install

这一步应该不存在问题,正确编译后:
输入ls /usr/local/include/ 会看到gmp.h

输入ls /usr/local/lib/ 会看到一些这样子的文件(我的可能多一些,因为我是两个实验做完截的图)
在这里插入图片描述

4. 对NTL进行编译

我们进入ntl的文件夹中的src文件夹中,然后重复上面的指令:

./configure

make

make check

sudo make install

ATTENTION:这里在make过程中可能会出错,下图是我的报错提示
在Ubuntu上安装NTL库以及编译测试_第1张图片我们看到说version number mismatch这一行是我们的出错原因。
这里我参考了 这个网站 中的某个回答,输入sudo ldconfig, 把新安装的gmp库更新下即可解决此问题。
关于sudo ldconfig
之后应该顺利进行了,成功后如下图所示:
在这里插入图片描述

编译测试:

源文件test.cpp:

#include 

using namespace std;
using namespace NTL;

int main()
{
   ZZ a, b, c;

   cin >> a;
   cin >> b;
   c = (a+1) * (b+1);
   cout << c << "\n";
}

在命令行输入:

g++ test.cpp -o test.exe -lntl -pthread -lgmp

就可以生成test可执行文件,执行即可。

关于wsl下载和文件权限:

关于wsl下载的一些事:
如果把在Windows里下载解压好的文件夹拖入Ubuntu中,会发生权限问题,拖入的文件甚至连访问都不可以,需要使用chmod -r 777 file_name指令去加权限(使用-r,因为需要递归地改变,子文件也是都需要改的)。
那比较简单的替代方法就是在Windows中解压后,在Ubuntu中使用cp指令复制一个过去(Windows磁盘挂载在mnt/中),这样权限不会发生问题。

参考资料:

  1. https://stackoverflow.com/questions/42607099/installing-ntl-with-gmp
  2. https://libntl.org/doc/tour.html(选项5,9)
  3. https://stackoverflow.com/questions/50046463/version-number-mismatch-inconsistency-between-gmp-h-and-libgmp
  4. https://zhuanlan.zhihu.com/p/66102855

你可能感兴趣的:(Cryptography,ubuntu,linux)