Фатальная ошибка: 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

Я надеюсь, что это очищает запрос

Другие вопросы по тегам