当前位置: 首页 > news >正文

在 Ubuntu18.04 上编译安装 GMP

(2021.08.04)最近为了安装 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

根据提示输入大整数ab,到这里就说明测试成功了

========= Input a and b => Output a + b =========
[-] a = 11111111111111111111111111
[-] b = 22222222222222222222222222
[+] c = 33333333333333333333333333

如果这边文章对你有帮助的话,可以给这篇文章点一个赞👍
后面继续更新「编译安装NTL库」~

参考


  1. https://gmplib.org ↩︎

  2. tar.zst 文件格式解压 ↩︎

http://www.lryc.cn/news/16484.html

相关文章:

  • 到底什么样的条件才能被浙大MBA录取?攻略集合
  • Impacket工具使用
  • 华为OD机试真题Python实现【RSA 加密算法】真题+解题思路+代码(20222023)
  • App.vue中读取不到路由的信息
  • Lambda表达式详解
  • 网关的通用设计框架
  • API 接口应该如何设计?如何保证安全?如何签名?如何防重?
  • LeetCode-131. 分割回文串
  • 【C++】string类的基本使用
  • 【第一章 - 绪论】- 数据结构(近八千字详解)
  • QIfw制作软件安装程序
  • 【C++】C++入门(上)
  • 5. Kimball维度建模常用术语及概念(一)
  • 内核调试之Panic-Oops日志分析
  • 论文解读 | [AAAI2020] 你所需要的是边界:走向任意形状的文本定位
  • 数据挖掘流程简单示例10min
  • KDJB1200六相继电保护测试仪
  • 从WEB到PWA 开发-发布-安装
  • FPGA纯vhdl实现MIPI CSI2 RX视频解码输出,OV13850采集,提供工程源码和技术支持
  • 《NFL橄榄球》:卡罗来纳黑豹·橄榄1号位
  • 我说我为什么抽不到SSR,原来是这段代码在作祟...
  • MySQL MGR 集群新增节点
  • 【单目标优化算法】蜣螂优化算法(Dung beetle optimizer,DBO)(Matlab代码实现)
  • 【C++】类和对象入门必知
  • day38 动态规划 | 509、斐波那契数 70、爬楼梯 746、使用最小花费爬楼梯
  • 2023年备考软考必须知道的6件事
  • GLOG如何控制输出的小数点位数
  • 2022年全国职业院校技能大赛(中职组)网络安全竞赛试题A(6)
  • Safety-Gym环境配置与安
  • 3月再不跳槽,就晚了