editline/history.h and editline/readline.h not found/working on OSX when trying to compile with developer tools installed already

yburyug picture yburyug · Apr 5, 2014 · Viewed 8.7k times · Source

I am working on this tutorial on building your own LISP (http://www.buildyourownlisp.com/chapter4_interactive_prompt) and for some reason when I try to compile I get this:

REPL.c:4:10: fatal error: 'editline/readline.h' file not found
#include <editline/history.h>
^
1 error generated.

I have installed the osx developer tools and brew is showing readline is installed and it doesnt know what to do when i try brew install editline.

This is my code:

  1 #include <stdio.h>
  2 #include <stdlib.h>
  3 #include <editline/readline.h>
  4 #include <editline/history.h>
  5 
  6 int main(int argc, char** argv) {
  7      
  8   /* version/exit info */
  9   puts("Edward Version 0.0.1");
 10   puts("Press Ctrl+c to Exit\n");
 11          
 12   /* endless loop for main REPL */
 13   while (1) { 
 14     /* output prompt and read line */
 15     char* input = readline("lispy> ");
 16                   
 17     /* put input in history  */
 18     add_history(input);
 19                       
 20     /* Echo input back */                          
 21     printf("No you're a %s\n", input);
 22                       
 23     /* free input */
 24     free(input);
 25   }                           
 26   return 0;
 27 } 

It is obviously very basic, but I really want to get this project rolling so I'm hoping I can figure this out. This is what I'm using to compile:

cc -std=c99 -Wall REPL.c -ledit -o REPL

Answer

Martin R picture Martin R · Apr 5, 2014

Include only

#include <editline/readline.h>

which should exist if the command line tools are installed. This file contains the "readline wrapper" for libedit, including the history functions as well. An include file <editline/history.h> does not exist on OS X.

I tested your code with that modification, and it compiled and ran without problems.