致命错误:editline/readline.h:没有那个文件或目录,编译终止。

4

致命错误

我正在处理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(包含上述头文件),但如何使用这些文件并使代码运行起来是我需要帮助的地方。


1
你把 libedit 安装在哪里了?也就是说,那些头文件在哪里? - kaylum
在包含程序(上面的代码片段)文件的文件夹中。我是否正在Windows10环境下工作? - user6208365
在这种情况下,请尝试:#include "editline/readline.h"#include "editline/history.h"。也就是说,使用双引号而不是尖括号。 - kaylum
它没有起作用... - user6208365
4个回答

3
在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

希望有所帮助。顺便说一下,这是一个很棒的教程。

有人知道如何在FreeBSD中执行相同的过程吗?我安装了二进制editline,但不知道如何执行或修改程序。 - Nicolás Gómez

1

我在Ubuntu 18.04版本中遇到了这个问题,安装以下软件包对我有用

sudo apt install libeditline-dev 
sudo apt-get install libedit-dev

我参考了以下帖子Readline-Issue


0

要安装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>

将它们用作头文件,然后按照教程中给出的方式通常使用历史记录和读取命令。

然后在编译时使用(假设您的文件名为“prompt.c”,输出编译文件为“PromptOutput”)

gcc prompt.c -ledit -o PromptOutput

替代

gcc prompt.c -o PromptOutput

原因是我们之前没有将程序与 "editline" 链接起来。

我正在使用Ubuntu 20.X。

对于Arch,请使用

histedit.h

我希望这可以解决你的问题。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接