最近为了安装 IBM 的开源项目 HElib C++,需要在服务器上先安装GMP和NTL,NTL需要依赖GMP,所以先来安装一下GMP,记录一下在服务器上安装成功的过程:)
直接安装libgmp二进制文件
sudo apt-get install libgmp-dev
如果选择直接安装编译好的二进制文件,可以跳到看「检查是否安装成功」部分进行测试;如果想要编译安装,就接着往下看~
安装依赖
我的系统是Ubuntu 18.04 LTS
,先安装一下GMP库的依赖:
sudo apt-get install m4
下载并解压GMP压缩文件
在GMP的官网1有.tar.lz
,.tar.gz
,.tar.zst
版本的压缩文件,可以下载到本地再上传到服务器,也可以复制链接后直接在服务器上使用 wget/curl
下载(这边以gmp-6.2.1为例):
# 1. 使用 wget 下载 gmp-6.2.1.tar.xz
wget https://gmplib.org/download/gmp/gmp-6.2.1.tar.xz
# 2. 或者使用 curl 下载 gmp-6.2.1.tar.xz
curl https://gmplib.org/download/gmp/gmp-6.2.1.tar.xz --output gmp-6.2.1.tar.xz
然后进行解压 2:
# 1. 对gmp-6.2.1.tar.xz进行解压
xz -d gmp-6.2.1.tar.xz && tar xvf gmp-6.2.1.tar
# 2. 对gmp-6.2.1.tar.gz进行解压
tar -zxvf gmp-6.2.1.tar.gz
# 3. 解压zst文件需要先安装zstd包,然后再对gmp-6.2.1.tar.zst进行解压
sudo apt install zstd
tar -I zstd -xvf gmp-6.2.1.tar.zst
然后就可以开始安装了~
编译安装GMP
# 进入gmp目录
cd gmp-6.2.1
# 设置安装路径前缀,建议设置为/usr
./configure --prefix=/usr --enable-cxx
# 开始编译安装
make
make check
sudo make install
检查是否安装成功
可以先进入 /usr/local/lib
目录查看有没有 libgmp
相关的文件。
cd /usr/local/lib
ls
# 大概会包含下面这些文件,基本上就说明安装成功了
# libgmp.a libgmp.so.10 libgmpxx.la libgmpxx.so.4.6.1
# libgmp.la libgmp.so.10.4.1 libgmpxx.so libgmpxx.so.4
# libgmp.so libgmpxx.a
然后再来编译一个简单的测试
# 使用vim编辑器新建并打开一个文件
vim testGMP.cpp
在vim
打开的空文件中,切换为英文输入法,按i
来进入插入模式,粘贴下面的代码,再按esc
键退出插入模式,输入:wq
然后回车,即可保存并退出。
#include <gmpxx.h>
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
mpz_t a, b, c;
mpz_init(a);
mpz_init(b);
mpz_init(c);
printf("========= Input a and b => Output a + b =========\n");
printf("[-] a = ");
gmp_scanf("%Zd", a);
printf("[-] b = ");
gmp_scanf("%Zd", b);
mpz_add(c, a, b);
gmp_printf("[+] c = %Zd\n",c);
return 0;
}
然后可以通过ls
命令看到当前目录下面有testGMP.cpp
这个文件,就可以对其进行编译测试了。
# 编译testGMP.cpp
g++ testGMP.cpp -o testGMP -lgmp -lm
# 没有报错的话就说明安装成功~运行即可
./testGMP
根据提示输入大整数a
和b
,到这里就说明测试成功了
========= Input a and b => Output a + b =========
[-] a = 11111111111111111111111111
[-] b = 22222222222222222222222222
[+] c = 33333333333333333333333333
如果这边文章对你有帮助的话,可以给这篇文章点一个赞👍
后面继续更新「编译安装NTL库」~