在Ubuntu上安装NTL

在Ubuntu18.04上编译安装NTL 这篇文章介绍一下NTL库的编译安装过程,也包含测试程序来帮助检查是否已经安装成功 由于NTL库需要依赖GMP库,所以需要先完成GMP的安装,可以参考我的文章「Ubuntu安装GMP」 首先要在https://libntl.org/download.html下载NTL的压缩文件,然后进行解压。 # 安装依赖 sudo apt-get install -y autoconf sudo apt-get install -y libgf2x-dev # 解压 tar zxvf ntl-11.5.1.tar.g. 阅读详情

因为项目需要,准备在Ubuntu上使用NTL,在官网上 http://shoup.net/ntl/ 下载

Unix:    ntl-9.7.0.tar.gz, 下载好后,进入该包所在目录,解压该压缩包,

$ tar -zxvf ntl-9.7.0.tar.gz

进入解压后的文件夹中,$ cd ntl-9.7.0/,

查看有哪些文件夹或文件$ ls

doc  include README  src

打开README  $ catREADME

提示:

For a detailed guideto installation, please see the appropriate

documentation:

   * doc/tour-unix.html for unix systems

   * doc/tour-win.html for Windows and othersystems

因为是在Linux上使用,所以打开doc/tour-unix.html,

官网文档中也有介绍 http://shoup.net/ntl/doc/tour-unix.html

按照该步骤一步一步来

因为已经解压出来了,则前面的步骤就跳过,直接

$ cd src

$ ./configure

$ make

在这里给了错误提示

gen_gmp_aux.c:26:17:fatal error: gmp.h: No such file or directory

compilationterminated.

make[1]: ***[setup3] Error 1

make[1]: Leavingdirectory `/home/insider/test/ntl-9.7.0/src'

make: *** [all]Error 2

提示说我没有gmp.h,所以先看了下安装文档后面的,其中有一句

For this to work, GMP must already be installed (most Unixdistributions already come with GMP installed, but seethis page formore details). If you really do not want to use GMP, you can pass theoption NTL_GMP_LIP=off to configure.

所以我还得先装GMP, https://gmplib.org/  从官网中下载gmp-6.1.0.tar.lz,然后解压

$ lunzipgmp-6.1.0.tar.lz

接着给了提示,说我还没安装lunzip

The program 'lunzip'is currently not installed.  You caninstall it by typing:

sudo apt-get installlunzip

那就安装个lunzip咯

$ sudo apt-getinstall lunzip

安装完后继续解压

$ lunzipgmp-6.1.0.tar.lz

生成了个gmp-6.1.0.tar文件

$tar -xvf gmp-6.1.0.tar

进入解压后的文件夹中

$ cd gmp-6.1.0/

GMP的官方文档中也写了如何安装GMP https://gmplib.org/manual/Installing-GMP.html#Installing-GMP

$ ./configure

这里就出现了错误

checking forsuitable m4... configure: error: No usable m4 in $PATH or /usr/5bin (seeconfig.log for reasons).

我猜测估计就是没装m4吧,直接去安装

$ sudo apt-getinstall m4

安装完后继续上述步骤

$ ./configure

这次没问题了,

$ make

$ makecheck

$ makeinstall

看到最后一行make: *** [install] Error 2

再往上看一下,/bin/mkdir: cannot create directory`/usr/local/share/info': Permission denied

原来是权限不够,还以为又哪里出错了呢

$ sudo make install

这次就没问题了,因为设置都是默认,所以应该在/usr/local/include和/usr/local/lib里增加了GMP相关的头文件以及库

$ ls/usr/local/include/

gmp.h

$ ls /usr/local/lib/

libgmp.a  libgmp.la libgmp.so  libgmp.so.10  libgmp.so.10.3.0

至此,GMP是安装完了

回到NTL的安装,进入src文件夹中,重新来过一遍吧,以防万一

$ ./configure

$ make

这个过程比较久,需要多等待下,运行好几个测试

$ makecheck

$ sudomake install

检查一下

$ ls/usr/local/include/

gmp.h  NTL

$ ls /usr/local/lib/

libgmp.a   libgmp.so    libgmp.so.10.3.0  libgmp.la  libgmp.so.10 libntl.a

至此NTL也安装好了,现在来做个简单测试

官方文档给出一些例子,这里我主要使用到里边的大整数功能,主要涉及了ZZ类,相关例子的网址: http://shoup.net/ntl/doc/tour-ex1.html

#include <NTL/ZZ.h>

 

using namespace std;

using namespace NTL;

 

int main()

{

  ZZ a, b, c; 

 

  cin >> a; 

  cin >> b; 

  c = (a+1)*(b+1);

  cout << c << "\n";

}

$ vim ntl_test.cc

复制上述的代码,保存后,进行编译运行

$ g++ ntl_test.cc -otest

出现以下错误

/tmp/cctWcbOG.o: Infunction `main':

ntl_test.cc:(.text+0x3a):undefined reference to `NTL::operator>>(std::basic_istream<char,std::char_traits<char> >&, NTL::ZZ&)'

ntl_test.cc:(.text+0x4b):undefined reference to `NTL::operator>>(std::basic_istream<char,std::char_traits<char> >&, NTL::ZZ&)'

ntl_test.cc:(.text+0xda):undefined reference to `NTL::operator<<(std::basic_ostream<char,std::char_traits<char> >&, NTL::ZZ const&)'

/tmp/cctWcbOG.o: Infunction `NTL::ZZ::Deleter::apply(void*&)':

ntl_test.cc:(.text._ZN3NTL2ZZ7Deleter5applyERPv[NTL::ZZ::Deleter::apply(void*&)]+0x14):undefined reference to `_ntl_gfree(void**)'

/tmp/cctWcbOG.o: Infunction `NTL::ZZ::operator=(NTL::ZZ const&)':

ntl_test.cc:(.text._ZN3NTL2ZZaSERKS0_[NTL::ZZ::operator=(NTL::ZZconst&)]+0x36): undefined reference to `_ntl_gcopy(void*, void**)'

/tmp/cctWcbOG.o: Infunction `NTL::add(NTL::ZZ&, NTL::ZZ const&, long)':

ntl_test.cc:(.text._ZN3NTL3addERNS_2ZZERKS0_l[NTL::add(NTL::ZZ&,NTL::ZZ const&, long)]+0x41): undefined reference to `_ntl_gsadd(void*,long, void**)'

/tmp/cctWcbOG.o: Infunction `NTL::mul(NTL::ZZ&, NTL::ZZ const&, NTL::ZZ const&)':

ntl_test.cc:(.text._ZN3NTL3mulERNS_2ZZERKS0_S3_[NTL::mul(NTL::ZZ&,NTL::ZZ const&, NTL::ZZ const&)]+0x4e): undefined reference to`_ntl_gmul(void*, void*, void**)'

collect2: ldreturned 1 exit status

我想是它不认识NTL的库文件在哪,所以

$ g++ ntl_test.cc -o test -L /usr/local/lib/,还是出现类似的错误,所以我想肯定是我忘了加入什么参数,但是不太记得需要加什么了,后面在 http://shoup.net/ntl/doc/tour-unix.html 看到了需要的参数

$ g++ -g -O2ntl_test.cc -o test -lntl -lgmp -lm

这下没问题了,如果还出错,在加入-I,-L手动指定头文件以及库文件的位置

$ ./test

2

5

18

结果是对的,至此就搞定了,但对于我这种菜鸟来说,花了很长世间,中间出现了很多个问题,都花了很长时间才解决,现在回过头开看,官方文档很重要,记得先看看文档,再下手!!

NTL使用方法 最近使用到了NTL,有些教程上都说到了要生成一个NTL.lib的文件,但是教程是基于VC++6.0写的,我用的是VS2008,通过摸索,成功生成NTL.lib文件,下面是过程。 立即下载

相关推荐

常见js手撕题及算法总结

设计一个lazyMan,实现以下功能: LazyMan(‘Tony’); // Hi I am Tony LazyMan(‘Tony’).sleep(10).eat(‘lunch’); // Hi I am Tony // 等待了10秒… // I am eating lunch LazyMan(‘Tony’).eat(‘lunch’).sleep(10).eat(‘dinner’); // H...

没有名字适合我的博客 3176

2020-10-08-NTL库的安装(Ubuntu系统)

Ubuntu下NTL库的安装 针对在unbuntu下NTL库的安装,本文提供了详细的讲解,并对部分可能出现的问题进行了解析。 文档说明: 1.部分图片来自陈老师的安装教程如下网址 (https://mp.weixin.qq.com/s?src=11&timestamp=1584003385&ver=2211&signature=Pn1kovyvRuB7GIGOJxTjK5eWwWlIRmS8VsaTZGYeQUZoFUN7RrPKWqgOqognlLkWDVSwP3054ACZaqH

qq_46314975的博客 3093

M1/M2 Mac用户看过来:不装VirtualBox,用PD虚拟机也能跑ENSP的保姆级教程

本文为M1/M2 Mac用户提供了一份不依赖VirtualBox,使用Parallels Desktop虚拟机运行ENSP的详细指南。通过ARM架构的Win10镜像选择、组件替代方案和网络配置优化,实现ENSP核心功能的高效运行,特别适合网络工程师在苹果芯片设备上进行网络模拟。

weixin_28683065的博客 413

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

文章目录介绍:步骤:0. 下载前的准备1. 下载GMP并解压2. 下载NTL并解压3. 对GMP进行编译3. 对NTL进行编译关于wsl下载和文件权限:参考资料: 介绍: NTL是一个高性能的,可移植的c++库,提供任意长度整数的数据结构和算法;对于整数和有限域上的向量、矩阵和多项式;并且适用于任意精度的浮点运算。我们在Ubuntu(我使用的是Windows下的子系统wsl,但是应该是一样的) 步骤: 0. 下载前的准备 首先我们要确保必须有g++ 和 m4 g++: sudo apt-get instal

weixin_45599342的博客 4614

银河麒麟V10新特性解析:从安装到AI应用的全面指南

本文全面解析银河麒麟V10操作系统的新特性,从安装指南到AI应用开发,详细介绍了其智能调度引擎、神经网络加速和场景化AI工具集等核心功能。通过实战案例展示如何高效配置AI环境、优化性能,并解决常见问题,助力开发者在国产操作系统上实现高效AI开发与应用部署。

seed的博客 302

群晖NAS实战:从零部署Container Manager与Docker代理配置全攻略

本文详细介绍了在群晖NAS上从零部署Container Manager与配置Docker代理的完整流程。针对国内用户常见的镜像拉取问题,提供了图形化界面与SSH命令行两种解决方案,并分享了MySQL容器部署的实战案例。文章特别强调了网络配置技巧和日常维护方法,帮助用户高效管理NAS上的容器应用。

weixin_29254673的博客 1308

在 Ubuntu18.04 上编译安装 NTL

这篇文章介绍一下NTL库的编译安装过程,也包含测试程序来帮助检查是否已经安装成功

Slightwind's Blog 626

【魔兽世界插件】魔兽世界插件实战笔记从入门到放弃的心理历程 第一节 lua框架的建立

魔兽世界插件实战笔记从入门到放弃的心理历程 第二节 lua框架的建立 找到魔兽世界的安装目录,找到插件的默认位置:\World of Warcraft\_retail_\Interface\AddOns,在这里建立一个文件夹,魔兽的插件都是用一个文件夹来区分的,第一课吗,就用Lesson_one吧。 下面建立的三个文件,第一个点toc文件是最重要的一个,它是魔兽客户端识别插件的一个标识符。 魔兽版本号有一个函数可以查询在WoWLua下面运行:print("当前游戏版本号:",(select(4,GetBui

qq_33075391的博客 6450

在Ubuntu 安装 NTL 库

关于NTL (A Library for doing Number Theory): NTL is a high-performance, portableC++library providing data structures and algorithms for manipulating signed, arbitrary length integers, and for vectors, matrices, and polynomials over the integers an...

__52Hz__ 2634

39、信号流图:解决线性代数方程组的图论方法

本文介绍了信号流图理论在求解线性代数方程组中的应用,重点阐述了Coates方法和Mason方法的原理、步骤及对比分析。通过图论视角,将矩阵运算转化为对有向图结构的分析,利用1-因子、1-阶连接、前向路径和反馈回路等概念,推导出方程组解的拓扑公式。文章结合具体实例演示两种方法的计算过程,并总结其在电路分析、控制系统和通信系统等领域的拓展应用,展示了信号流图理论的直观性与有效性。

pear55的博客 88

南方cass9.1【Frame主框架程序没有加载】解决方法(附安装包)

南方cass9.1【Frame主框架程序没有加载】解决方法。

weixin_46066938的博客 3万+

Ubuntu配置NTL库

Ubuntu配置NTL库

旺旺的碎冰冰~的博客 516

[Dify] 如何在Dify中解析上传的TXT文件内容

在Dify平台上构建智能应用时,解析用户上传的.txt文件是关键步骤。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 2639

虚拟机Ubuntu安装NTL

软件版本: VMware 10.0.0 Ubuntu 16.04 LTS 先安装编译器g++和gcc,可以直接使用以下命令安装Linux常用的开发编译工具包: sudo apt-get install build-essential g++ --version //安装完成后可以查版本 NTL大数库依赖gmp,gmp依赖m4,所以先安装m4再安装gmp最后安装NTL。 安装m4 sudo a...

weixin_43774577的博客 2862

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

如何解决ubuntu20.04安装NTL出现“_ntl_gssub”未识别情况

使用gmp版本为6.3.0,gf2x版本为1.3.0,在安装NTL-11.5.1时,报错“error: ‘_ntl_gssub’ was not declared in this scope;

Frog_mm的博客 187

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Ubuntu上安装NTL库

1. Downloading and building GF2X download gf2x-master.tar.gz:https://gitlab.inria.fr/gf2x/gf2x#the-gf2x-software-library installation instruction:https://libntl.org/doc/tour-gf2x.html % gunzip gf2x-master.tar.gz % tar xf gf2x-master.tar % .

LEE_FIGHTING_JINGYU的博客 1618

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

【Linux + 安装库】Ubuntu18.4.0下安装gmp+ntl+crytpo++库的相关操作

一、装Ubuntu 1、虚拟机下装好的ubuntu系统安装编译器,首先需要添加源 代码 sudoadd-apt-repository ppa:ubuntu-toolchain-r/test 2、添加源之后,安装编译器 gcc安装 :sudo apt-get install gcc /sudo aptinstall gcc g++安装 :sudo apt-get install g+...

毛先森的博客 1993

Ubuntu18.04安装ntl库

直接给出shell脚本,脚本与安装包(m4-1.4.18.tar.gz,gmp-6.2.0.tar.xz,gf2x-1.3.0.tar.gz,ntl-11.4.3.tar.gz)放到同一目录,赋予此脚本执行权限。另外,我这里默认你的电脑上面已经安装gcc,g++,make。安装包有的需要外网才能下,所以我就分享一下:链接: https://pan.baidu.com/s/1gj0DuBYEBTN4L5IGddjc-Q 密码: wa3p tar Jxvf gmp-6.2.0.tar.xz tar zxv.

ckm1607011的博客 1053

别再用apt了!手把手教你为特定项目(如NTL库)在Ubuntu中定制安装GMP

本文详细介绍了在Ubuntu系统中为特定项目(如NTL库)定制安装GMP的步骤。通过源码编译方式,用户可以启用C++支持、自定义ABI模式,并优化性能,满足NTL等数学库的特殊需求。文章包含环境准备、源码编译、系统配置及常见问题排查等实用内容。

weixin_30879169的博客 514

ntl-安装及使用

NTL是一个基于c++实现的数论库,可以方便的实现各种密码方案

网安小白 4402

保姆级教程:在Ubuntu 22.04上从源码编译安装NTL密码数论库(附GMP/gf2x依赖配置)

本文提供了一份详细的保姆级教程,指导用户在Ubuntu 22.04上从源码编译安装NTL密码数论库,包括GMP和gf2x依赖库的配置。教程涵盖了环境准备、依赖库安装、NTL库的定制化编译、系统环境配置以及验证与性能测试,帮助开发者高效完成NTL库的安装与优化。

weixin_29323365的博客 285

Ubuntu 22.04 下编译安装GMP库,为NTL库铺路(附完整命令与验证方法)

本文详细介绍了在Ubuntu 22.04系统上编译安装GMP库的完整流程,包括环境准备、源码配置、编译测试及性能优化等关键步骤。特别针对NTL库的兼容性需求提供了专业建议,帮助开发者构建高性能数学计算基础环境。

weixin_33734785的博客 152

手把手教你:在Ubuntu 22.04上从源码编译安装GMP库(解决NTL依赖)

本文详细介绍了在Ubuntu 22.04上从源码编译安装GMP库的完整步骤,特别针对解决NTL依赖问题。通过环境准备、配置编译、验证安装等关键环节的深入讲解,帮助开发者掌握高性能数学运算库的定制化部署技巧,适用于密码学、计算机代数系统等需要精确版本控制的场景。

weixin_28725949的博客 195

Linux下NTL库的安装

执行上述安装命令后,在/usr/local/lib文件夹下生成libntl.a, libntl.la, libntl.so, libntl.so.44, libntl.so.44.0.1. 在/usr/local/include文件夹下生成NTL文件夹。操作系统:Ubuntu 22.04 LTS。

weixin_43031313的博客 754

安装 GMP、NTL、CTMalloc ,编译 OpenFHE

首先安装 GMP、NTL、CTMalloc 等等很有用的三方库,然后编译 OpenFHE 工具包。

weixin_44885334的博客 1486
下一篇: MySQL实现大整数相加的udf
corewith
博客等级 码龄16年 1粉丝 2原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值