找不到NTL头文件

时间:2014-01-30 12:52:09

标签: c++ ubuntu ntl

我已经在我的Ubuntu上下载并安装了NTL库。我目前正在使用gedit来编写我的程序,并在我的程序中包含了这个ZZ.h标题。这是我在终端中编译程序的方式:- g++ keygen.cpp -o keygen -I ../include -L ../lib -lntl -lm

我很确定这条线是正确的但由于某些未知原因,我收到以下错误:

KeyGen.cpp:9:20: error: NTL/ZZ.h: No such file or directory
KeyGen.cpp:15: error: expected constructor, destructor, or type conversion before ‘int’

这个解决方案对我来说非常简单:这是将NTL库直接添加到我的程序文件夹中。我做到了这一点,但我仍然得到同样的错误。

3 个答案:

答案 0 :(得分:1)

如果您不需要最新的(6.0.0)版本的NTL,您可以在Ubuntu中执行以下操作:

user@host:~$ sudo apt-get install libntl-dev
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  libntl-5.4.2
The following NEW packages will be installed:
  libntl-5.4.2 libntl-dev
0 upgraded, 2 newly installed, 0 to remove and 112 not upgraded.
Need to get 2,035 kB of archives.
After this operation, 7,016 kB of additional disk space will be used.
Do you want to continue [Y/n]? y
Get:1 http://ftp.de.debian.org/debian/ squeeze/main libntl-5.4.2 amd64 5.4.2-4 [767 kB]
Get:2 http://ftp.de.debian.org/debian/ squeeze/main libntl-dev amd64 5.4.2-4 [1,268 kB]
Fetched 2,035 kB in 2s (1,017 kB/s)   
Selecting previously deselected package libntl-5.4.2.
(Reading database ... 59184 files and directories currently installed.)
Unpacking libntl-5.4.2 (from .../libntl-5.4.2_5.4.2-4_amd64.deb) ...
Selecting previously deselected package libntl-dev.
Unpacking libntl-dev (from .../libntl-dev_5.4.2-4_amd64.deb) ...
Can not write log, openpty() failed (/dev/pts not mounted?)
Setting up libntl-5.4.2 (5.4.2-4) ...
Setting up libntl-dev (5.4.2-4) ..
user@host:~$ 

之后,系统中安装了包含所有开发标题的完整编译的NTL库,您可以使用它编译程序,而无需任何其他-I< path>。

如果您需要发行版具有的较新版本(请查看http://packages.ubuntu.com/en/source/trusty/ntl),您可以尝试自行构建库包。

答案 1 :(得分:0)

尝试编译和输出可执行文件的问题似乎是编译器在获取对象.o文件后无法链接必要的库。

许多人经常通过首先编译g++ -c然后通过链接可执行文件g++ -o的库来分离两个阶段来测试错误点。尽管-Wall开关并不总是有效,但尝试在编译期间尽可能多地为您提供信息也会有所帮助。

查看this网页。至于使用不同的开关链接库,请尝试this网页。

我不确定这是不是一个错字;但我想知道交换机和目录之间的空间:
-I ../include-L ../lib是否是问题。

答案 2 :(得分:0)

你在评论中说:

  

在.cpp文件夹中创建了一个名为“include”的文件夹,并在该文件夹中包含了NTL库

但你的编译命令说:

g++ keygen.cpp -o keygen -I ../include -L ../lib -lntl -lm.

在我看来,你的意思是:

g++ keygen.cpp -o keygen -I ./include -L ../lib -lntl -lm.
#                           ^^^^^^^^^

因为..上升了一个目录。

相关问题