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

Я загрузил и установил библиотеку 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

Решение

Если вам не нужна последняя (6.0.0) версия NTL, вы можете сделать следующее в Ubuntu:

user @ host: ~ $ sudo apt-get установить libntl-dev
Чтение списков пакетов ... Готово
Построение дерева зависимостей
Чтение информации о состоянии ... Готово
Будут установлены следующие дополнительные пакеты:
libntl-5.4.2
Будут установлены следующие НОВЫЕ пакеты:
libntl-5.4.2 libntl-dev
0 обновлено, 2 недавно установлено, 0 для удаления и 112 не обновлено.
Необходимо получить 2035 кБ архивов.
После этой операции будет использовано 7 016 КБ дополнительного дискового пространства.
Вы хотите продолжить [Да / Нет]? Y
Получить: 1 http://ftp.de.debian.org/debian/ squeeze / main libntl-5.4.2 amd64 5.4.2-4 [767 кБ]
Получить: 2 http://ftp.de.debian.org/debian/ squeeze / main libntl-dev amd64 5.4.2-4 [1268 кБ]
Получено 2,035 кБ за 2 с (1,017 кБ / с)
Выбор ранее отмененного пакета 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) ...
Не могу записать журнал, openpty () не удалось (/ dev / pts не смонтирован?)
Настройка libntl-5.4.2 (5.4.2-4) ...
Настройка libntl-dev (5.4.2-4) ..
пользователь @ хост: ~ $

после этого в вашей системе устанавливается полная скомпилированная библиотека NTL со всеми заголовками разработки, и вы можете скомпилировать свою программу с ней без каких-либо дополнительных ключей -I.<путь>.

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

1

Другие решения

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

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

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

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

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
По вопросам рекламы [email protected]