Фатальная ошибка: editline/readline.h: компиляция такого файла или каталога не прекращена
Фатальная ошибка
Я работаю над makeyourownlisp, где в программу должны быть добавлены editline/readline.h и editline/history.h. Ниже приведен фрагмент кода
#include<stdio.h>
#include<stdlib.h>
#include<editline/readline.h>
#include<editline/history.h>
static char input[2048];
int main(int argc, char** argv)
{
printf("CLISP version 1.02\n");
printf("Ctrl + c to exit\n");
while(1)
{
char * input = readline(">>> \n");
add_history(input);
printf("%s", input);
free(input);
}
}
Я уже установил libedit-20170329-3.1(содержащий вышеупомянутые заголовочные файлы), но мне нужно помочь с тем, как использовать эти файлы и получать кодовый код.
4 ответа
В Debian Buster 10 мне пришлось установить пакет с помощью:
sudo apt install libeditline-dev
Вместо:
#include <editline/readline.h>
#include <editline/history.h>
Я только что включил:
#include <editline.h>
запускал программу с флагом -leditline и работал отлично. Обратите внимание, что я выполнял переносимую программу для систем Windows и UNIX. Следуя руководству, этот фрагмент моего кода будет выглядеть так:
// otherwise include the editline headers
#else
#include <editline.h>
#endif
Надеюсь, это помогло. Замечательный учебник, кстати.
Я столкнулся с этой проблемой в версии ubuntu 18.04, установка следующих пакетов сработала для меня
sudo apt install libeditline-dev
sudo apt-get install libedit-dev
Я имею в виду следующую ветку Readline-Issue
Ответ из будущего.
Я также работаю над тем же руководством. И я тоже застреваю на этом этапе. Затем удаление#include<editline/history.h>
решил мою проблему.
Благодаря этой теме https://github.com/fabianishere/brainfuck/issues/57
PS Я использую Archlinux
для установки использования файла заголовка editline,
sudo apt-get install libedit-dev
или для использования в Fedora,
su -c "yum install libedit-dev*"
затем приступайте к добавлению файлов заголовков, подобных этому
#include <stdio.h>
#include <stdlib.h>
#include <editline/readline.h>
#include <editline/history.h>
используйте их в качестве файлов заголовков, а затем используйте команду History и readline, как обычно, как указано в руководстве.
Затем при компиляции используйте (при условии, что ваше имя файла "prompt.c", а выходной скомпилированный файл - "PromptOutput"
gcc prompt.c -ledit -o PromptOutput
вместо
gcc prompt.c -o PromptOutput
это потому, что мы ранее не связывали программу с "editline".
Я использую Ubuntu 20.X.
для Arch используйте
histedit.h
Я надеюсь, что это очищает запрос