Datei „readline/readline.h“ nicht gefunden

Lesezeit: 2 Minuten

Benutzeravatar von timeshift117
Zeitverschiebung117

Ich habe aufgenommen:

#include "stdio.h"    
#include <readline/readline.h>
#include <readline/history.h>

und mein Compiler enthält das Flag

-lreadline

aber ich bekomme immer noch die Fehlermeldung:

fatal error: 'readline/readline.h' file not found

Ich versuche, die Funktion zu verwenden, readline();

Hier genauer definiert: http://linux.die.net/man/3/readline

  • Welches Betriebssystem/Version verwendest du?

    – Tim

    15. April 2014 um 13:27 Uhr

  • In welchem ​​Pfad sucht Ihr Compiler nach Include-Dateien? (In der Regel enthält es /usr/include). Tut readline/readline.h existieren in diesem Pfad? (z.B, /usr/include/readline/readline.h). Wenn nicht, fügen Sie den richtigen Pfad über hinzu -I. (z. B. wenn Sie readline in /usr/local installiert haben, fügen Sie -I/usr/local/include zum Compileraufruf.)

    – William Pursel

    15. April 2014 um 13:28 Uhr

  • @TimCastelijns 2013 x86_64 x86_64 x86_64 GNU/Linux

    – Zeitverschiebung117

    15. April 2014 um 13:33 Uhr

  • @WilliamPursell Ich kann keine lokalen Dateien einfügen, die nicht einigermaßen plattformunabhängig sind, da dies auf anderen Systemen verwendet werden muss, auf denen ich nicht kontrollieren kann, was installiert wird.

    – Zeitverschiebung117

    15. April 2014 um 13:34 Uhr

  • Eigentlich denke ich, dass Sie Recht haben könnten @WilliamPursell, danke

    – Zeitverschiebung117

    15. April 2014 um 13:38 Uhr

Mikes Benutzeravatar
Mike

Sie verweisen auf eine Linux-Distribution, daher müssen Sie die Readline-Entwicklungsbibliotheken installieren

Auf Debian-basierten Plattformen wie Ubuntu können Sie Folgendes ausführen:

sudo apt-get install libreadline-dev 

und das sollte die richtigen Header an den richtigen Stellen installieren.

Wenn Sie eine Plattform mit verwenden yumwie SUSE, dann sollte der Befehl lauten:

yum install readline-devel

  • Danke, das hat funktioniert, aber als ich die -lreadline entfernte, funktionierte sie nicht mehr, also musste ich sie wieder einfügen. Ich verwende clang zum Kompilieren, nicht sicher, ob das der Grund ist, warum ich sie belassen musste. Ich akzeptiere Ihre Antwort wenn die mind. Die Zeit ist um.

    – Zeitverschiebung117

    15. April 2014 um 13:45 Uhr

  • @ timeshift117 – du hast recht, es muss da drin sein. Nur um finden Die Header-Dateien müssen Sie nicht verlinken, sondern auf verwenden die Funktion, die Sie zum Linken der readline-Bibliothek benötigen. Es ist sinnlos, die Header einzuschließen, aber nicht zu verwenden, also habe ich das aus der Antwort entfernt

    – Mike

    15. April 2014 um 13:52 Uhr

  • Können Sie mir sagen, was -dev bedeutet?

    – Suraj Jain

    25. Februar 2017 um 4:36 Uhr

  • @SurajJain -Entwickler oder -entwickeln Suffixe bedeuten Quellen und Header für Entwickler. Pakete ohne Entwickler enthält nur kompilierte Binärdateien.

    – Denis Kolodin

    27. Februar 2017 um 10:51 Uhr

Dieser Befehl hat mir unter Linux Mint geholfen, als ich genau das gleiche Problem hatte

gcc filename.c -L/usr/include -lreadline -o filename

Sie könnten Alias ​​verwenden, wenn Sie es viele Male kompilieren. Zum Beispiel:

alias compilefilename="gcc filename.c -L/usr/include -lreadline -o filename"

  • Das -L Option dient zur Angabe von Bibliotheksverzeichnissen, nicht von Header-Dateien.

    – Stark

    24. September um 10:47 Uhr

1418580cookie-checkDatei „readline/readline.h“ nicht gefunden

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy