- 介绍:
- 步骤:
- 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++ --v 和m4 --v
GMP网站:https://gmplib.org/,这里我下载的是当时最新的版本gmp-6.2.1。
下载解压过程不再赘述,我是在wsl里面所以很方便,如果大家可以使用图形化界面也会很方便,使用命令行下载的话就自己去百度一下,我也不懂。
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/ 会看到一些这样子的文件(我的可能多一些,因为我是两个实验做完截的图)
我们进入ntl的文件夹中的src文件夹中,然后重复上面的指令:
./configure make make check sudo make install
ATTENTION:这里在make过程中可能会出错,下图是我的报错提示
我们看到说version number mismatch这一行是我们的出错原因。
这里我参考了 这个网站 中的某个回答,输入sudo ldconfig, 把新安装的gmp库更新下即可解决此问题。
关于sudo ldconfig
之后应该顺利进行了,成功后如下图所示:
关于wsl下载的一些事:
如果把在Windows里下载解压好的文件夹拖入Ubuntu中,会发生权限问题,拖入的文件甚至连访问都不可以,需要使用chmod -r 777 file_name指令去加权限(使用-r,因为需要递归地改变,子文件也是都需要改的)。
那比较简单的替代方法就是在Windows中解压后,在Ubuntu中使用cp指令复制一个过去(Windows磁盘挂载在mnt/中),这样权限不会发生问题。
- https://stackoverflow.com/questions/42607099/installing-ntl-with-gmp
- https://libntl.org/doc/tour.html(选项5,9)
- https://stackoverflow.com/questions/50046463/version-number-mismatch-inconsistency-between-gmp-h-and-libgmp
- https://zhuanlan.zhihu.com/p/66102855



