Я загрузил и установил библиотеку 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 непосредственно в папку с моей программой. Я так и сделал, но все равно получаю ту же ошибку.
Если вам не нужна последняя (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) вы можете попробовать собрать библиотечный пакет самостоятельно.
Проблема с вашей попыткой скомпилировать и вывести исполняемый файл, по-видимому, заключается в неспособности компилятора связать необходимую библиотеку после получения объекта .o
файл.
Многие люди часто проверяют причину ошибки, разделяя два этапа, сначала компилируя g++ -c
затем путем связывания библиотек для исполняемого файла g++ -o
, Хотя -Wall
switch не всегда работает, и попытка предоставить вам как можно больше информации во время компиляции также может быть полезной.
Проверьте этот страница интернета. Что касается использования различных ключей для связывания библиотек, попробуйте этот страница интернета.
Я не уверен, что это была опечатка; но мне интересно, если пространство между коммутатором и каталогом:-I ../include
а также -L ../lib
была проблема.
Вы сказали в комментариях:
Я создал папку с именем 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.
# ^^^^^^^^^
поскольку ..
идет вверх на один каталог.