Заголовочный файл NTL не найден

0

Я загрузил и установил библиотеку NTL на своем Ubuntu. В настоящее время я использую 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 непосредственно в папку с программой. Я сделал именно это, но все равно получаю ту же ошибку.

  • 0
    У вас действительно есть заголовок NTL / ZZ.h в путях, которые g ++ использует для заголовков. Попробуйте запустить cpp -I ../include -x c++ -v чтобы получить весь список включаемых каталогов
  • 0
    @ user3159253 так значит сказать, что я ДОЛЖЕН видеть NTL / ZZ.h во включаемых каталогах?
Показать ещё 3 комментария
Теги:
ntl

3 ответа

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 <путь>.

Если вам нужна более новая версия, которую имеет ваш дистрибутив (проверьте http://packages.ubuntu.com/ru/source/trusty/ntl), вы можете попытаться самостоятельно собрать библиотечный пакет.

  • 0
    Я попытался, но терминал говорит мне, что пакет не найден.
  • 0
    Хм, что у вас есть Ubuntu?
Показать ещё 13 комментариев
0

Вы сказали в комментариях:

Создала папку с именем "include" в папке.cpp и уже включила библиотеку NTL в эту папку

Но ваша команда компиляции говорит:

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

Мне кажется, вы имели в виду:

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

так как .. идет вверх по одному каталогу.

0

Проблема с вашей попыткой скомпилировать и вывести исполняемый файл, по-видимому, является невозможностью компилятора связать необходимую библиотеку после получения файла .o. Объекта.

Многие люди часто проверяют точку разлома, разделяя эти два этапа, сначала компилируя g++ -c затем связывая библиотеки для исполняемого файла g++ -o. Хотя переключатель -Wall не всегда работает, попытка его предоставить вам как можно больше информации во время компиляции также может быть полезна.

Проверьте эту веб-страницу. Что касается использования разных переключателей для ссылок на библиотеки, попробуйте эту веб-страницу.

Я не уверен, что это была опечатка; но мне интересно, есть ли пространство между коммутатором и каталогом:
-I../include и -L../lib
была проблема.

  • 0
    Ну, он не достиг стадии соединения. KeyGen.cpp:9:20: error: NTL/ZZ.h: No such file or directory является сообщением от компилятора, точнее, от препроцессора
  • 0
    @ user3159253, спасибо за исправление.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню