我已经下载并在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库直接添加到我的程序文件夹中。我只是这样做了,但是我仍然遇到同样的错误。
如果您不需要最新的(6.0.0)版本的NTL,则可以在Ubuntu中执行以下操作:
用户@主机:〜$ sudo apt-get安装libntl-dev阅读包列表...完成建造依赖树阅读状态信息...完成将安装以下额外软件包: libntl-5.4.2将安装以下新软件包: libntl-5.4.2 libntl-dev0升级,2个新安装,0用于删除,112未升级。需要获得2,035 kb的档案。此操作后,将使用7,016 kb的其他磁盘空间。您想继续[Y/N]?y获取:1 http://ftp.de.debian.org/debian/squeeze/main libntl-5.4.2 amd64 5.4.2-4 [767 kb]获取:2 http://ftp.de.debian.org/debian/squeeze/main libntl-dev amd64 5.4.2-4 [1,268 kb]在2s(1,017 kb/s)中取2,035 kb选择先前取代的软件包libntl-5.4.2。(读取数据库... 59184当前已安装的文件和目录。)解开libntl-5.4.2(来自.../libntl-5.4.2_5.4.2-4_amd64.deb)...选择先前取代的软件包libntl-dev。解开libntl-dev(来自.../libntl-dev_5.4.2-4_amd64.deb)...不能写入日志,oppaty()失败(/dev/pts未安装?)设置libntl-5.4.2(5.4.2-4)...设置libntl-dev(5.4.2-4)..用户@主机:〜$
之后,完整编译的NTL库带有所有开发标头,您可以在系统中安装所有开发标头,您可以使用它编译程序,而无需任何其他-i< path>。
如果您需要发行版具有的较新版本(检查http://packages.ubuntu.com/en/source/trusty/ntl),您可以尝试自己构建库包。
.o
文件后无法链接必要的库。
许多人通常通过首先编译g++ -c
分开两个阶段,然后通过将库的库链接到可执行的g++ -o
来测试故障点。尽管-Wall
开关并不总是可行,但尝试在编译过程中为您提供尽可能多的信息也可能会有所帮助。
检查此网页。至于使用不同的开关来链接库尝试此网页。
我不确定它是否是错别字;但是我想知道交换机和目录之间的空间是否:
-I ../include
和 -L ../lib
是问题。
您在评论中说:
在.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.
# ^^^^^^^^^
因为 ..
登上一个目录。