3

致命错误

我正在制作 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

4 回答 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

希望有帮助。很棒的教程顺便说一句。

于 2020-11-19T15:29:26.627 回答
1

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

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

我参考了以下线程Readline-Issue

于 2021-06-17T09:52:24.377 回答
0

来自未来的答案。

我也在做同样的教程。我也被困在那一点上。然后删除#include<editline/history.h>解决了我的问题。

感谢那个线程https://github.com/fabianishere/brainfuck/issues/57

PS我正在使用Archlinux

于 2020-05-18T00:41:53.240 回答
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>

将它们用作头文件,然后像教程中给出的一样使用 History 和 readline 命令。

然后在编译时使用(假设你的文件名是“prompt.c”并且输出编译文件是“PromptOutput”

gcc prompt.c -ledit -o PromptOutput

代替

gcc prompt.c -o PromptOutput

这是因为我们之前没有将程序链接到“editline”。

我正在使用 Ubuntu 20.X。

对于 Arch,使用

histedit.h

我希望清除查询

于 2021-12-26T09:57:35.147 回答