#include <readline/readline.h> geht nicht

N

Nano

Foren As
Hallo zusammen folgendes Problem ich möchte die Bibliothek http://directory.fsf.org/project/readline/
in ein C Programm einbinden, leider gelingt mir dies nicht, getestet hab ich es sowohl unter Debian als auch mit cygwin unter Win XP

entsprechend der manpage habe ich folgenden code geschrieben

Code:
#include <stdio.h>
#include <stdlib.h>
#include "C:/cygwin/usr/include/readline/readline.h"
#include "C:/cygwin/usr/include/readline/history.h"

int
main (void)
{
  char *buf;



  while (1)
  {
      const char * p = " : ";
      buf = readline(p);
  }
  exit (EXIT_SUCCESS);
  return 0;
}

bei buf = readline(p); beschwert sich der compiler :

undefined reference to `_readline'

die includes hab ich schon verschieden getestet, obige version war die explizite path angabe zu der von cygwin mitgelieferten readline
<readline/readline.h> funktioniert ebnesowenig
sowie entpacken der dateien http://directory.fsf.org/project/readline/ von
und explizite path angabe dazu,...
Unter Debian hab ich die entsprechenden Packete per aptitude installiert, leider auch ohne erfolg
auf verschiedenen seite fand ich angaben für die übersetzung die allerdings auch nichts nutzten
gcc -lreadline -lncurses code.c -o code
gcc -lreadline code.c -o code

ohne die zeile mit dem readline code in der schleife wird die datei problemlos übersetzt.

entwicklungsumgebung ist auf beiden system eclipse, wobei ich unter debian auch per vi die file erstellt und mit gcc übersetzt habe, bzw versucht habe sie zu übersetzen die fehlermeldung ist leider die gleiche, undefined reference to readline


ich sitze jetzt schon einige stunden an diesem problem und bin kurz davor in die tastatur zu beissen,...
ich hoffe jemand hat eine zündende idee
 
Code:
$ cat bla.c
#include <stdio.h>
#include <stdlib.h>
#include <readline/readline.h>
#include <readline/history.h>

int
main (void)
{
  char *buf;



  while (1)
  {
      const char * p = " : ";
      buf = readline(p);
  }
  exit (EXIT_SUCCESS);
  return 0;
}

$ gcc bla.c -lreadline -o bla
$ ./bla
 :
works for me™ (openSUSE 11.1).


//Edit:

(VM mit Lenny)

Code:
dpkg -l | grep readline
ii  libreadline5                                5.2-3.1                                             GNU readline and history libraries, run-time
ii  libreadline5-dev                            5.2-3.1                                             GNU readline and history libraries, developm
ii  readline-common                             5.2-3.1                                             GNU readline and history libraries, common 

find /usr/include -iname "*readline*"

/usr/include/readline
/usr/include/readline/readline.h

$ gcc bla.c -lreadline -o bla
$ ./bla
 :
Wo ist das Problem?
 
Zuletzt bearbeitet von einem Moderator:
Mit 'undefined reference' beschwert sich eigentlich nicht der Kompiler, sondern der linker. Das heisst, dass die header schon korrekt eingebunden und die Funktion readline dort auch deklariert wurde.
Erst beim Linken wurde die Definition nicht gefunden. Ich vermute, dass Du die library nicht mitangegeben hast. Versuch mal, so zu kompilieren, wie es Rain_Maker vorschlaegt, naemlich mit einem '-lreadline'. Damit wird wird der Linker aufgefordert, auch in der Bibliothek libreadline.so nach definitionen zu suchen.
 

Ähnliche Themen

USB Geräte per Bash Script resetten (Gerät hängt sich öfter mal auf)

NagiosGrapher 1.7.1 funktioniert nicht

Fehler beim Linken

'libraryname': undefined reference to 'functionname'

Frage zu C

Zurück
Oben