【问题标题】:installing NTL with GMP使用 GMP 安装 NTL
【发布时间】:2017-07-25 05:30:13
【问题描述】:

我遇到的问题是在我的 mac (Sierra) 上安装带有 GMP 的 NTL。

这些是我按照this 教程采取的步骤

1) 我下载了Unix: ntl-10.3.0.tar.gz

2) 双击文件在我的下载中创建 ntl-10.3.0.tar.gz 文件夹

3)

cd ~/Downloads/ntl-10.3.0/src
./configure
make

这给了我一个错误,因为我猜我还没有安装 GMP:

gen_gmp_aux.cpp:26:10: fatal error: 'gmp.h' file not found
#include <gmp.h>

4) this 页面上有说明如何安装 GMP

5) 我从here 下载 gmp-6.1.2.tar.lz。 (这并不重要,但请注意说明中的扩展名有所不同......我提到所有内容以防万一)

6) 我发现 .lz 扩展需要lzip command:

7)

brew install lzip
cd ~/Downloads
lzip -d gmp-6.1.2.tar.lz 
tar -xf gmp-6.1.2.tar
cd gmp-6.1.2

8)

注意: 阅读说明,我没有配置 --prefix=$HOME/sw 因为我希望它安装在 /usr/local 目录中,而不是我的主目录中

./configure
make
make check

没有错误出现,每件事都是绿色的,并说“通过”

9)

make install

10)

回到NTL

cd ~/Downloads/ntl-10.3.0/src/
make

我得到了和以前一样的错误:

gen_gmp_aux.cpp:26:10: fatal error: 'gmp.h' file not found
#include <gmp.h>

11)

我查看我的目录

ls -la /usr/local/include/

并在应该在的地方找到 gmp.h

12)

我创建了一个简单的 .cpp 文件来测试它(基本上只是 main 和相关的包含)

g++ someFile.cpp -lgmp

顶部有这个

#include <gmp.h> 

它似乎没有找到它,同样的致命错误消息。

其他人似乎也遇到过这个问题(我能找到的都是几年前的) one of the guys 这样做了:

brew uninstall gmp
brew install gmp

我也照样做了,然后又试了NTL,还是不行……

我知道我可以在构建中添加一个不使用 GMP 的标志:

如果您只需要静态库,您还可以向配置脚本提供选项 --disable-shared。但是,如果您最终想将 NTL 构建为共享库,那么您还必须将 GMP 构建为共享库。

但我真的很想。

我做错了什么? 有什么建议吗?

我考虑过发送bug report,但我不认为这是一个错误,它与我的配置有关。

【问题讨论】:

  • 10 天后,解决方案的想法为零,我认为这是直接将其带到 GMP 的好时机。我非常彻底地填写了他们在上面提供的链接上要求的所有内容,他们的回应是让我知道我将其发送给了他们公司中错误的一群人(好吧,我明白了),然后将我置于垃圾邮件中列表,所以我无法将它发送到他们指示的地方,这也是他们回复的电子邮件,与我最初发送它的电子邮件不同......嗯......我还有什么要做的吗?这是对 GMP 的粗鲁,不要在那里寻找解决方案!

标签: c++ macos unix gmp ntl


【解决方案1】:

也许安装NTL的问题可以通过编辑/src目录下的file.txt来解决。您可以尝试在以下字符串中将@{GMP_XXX} 替换为适当的目录(例如/usr/local//usr/local/include//usr/local/lib/):

GMP_PREFIX=@{GMP_PREFIX}

GMP_INCDIR=@{GMP_INCDIR}
\#directory containing gmp.h if using GMP 

GMP_LIBDIR=@{GMP_LIBDIR}
\#directory containing libgmp.a if using GMP 

此外,this tutorial 可能非常有用。

【讨论】:

  • 我很欣赏这篇文章......我对目录路径进行了硬编码,我还尝试按照您提供的链接上的说明进行操作,但不幸的是他得到的错误与我自己的不同,所以它没有'不解决我的问题......我不明白为什么当我硬编码 gmp.h 文件的路径时它无法识别#include ...花了这么多时间,还有应该是一个非常简单的解决方案
猜你喜欢
  • 2023-03-09
  • 2021-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-21
相关资源
最近更新 更多