Ich versuche C-Code zu kompilieren, der innerhalb von GNU readline folgendes nutzt.Wie kann ich die GNU readline-Bibliothek korrekt an den Terminal-Eingang anschließen?
#include <readline/readline.h>;
#include <readline/history.h>;
Ich habe versucht, die <> zu "" und Kompilieren sowohl mit als auch ohne die -lreadline Optionen zu ändern. Nichts scheint zu funktionieren. Wenn ohne Kompilieren -lreadline unter gcc Ergebnisse in der folgenden erzeugt wird, während (ausführlich) Kompilieren:
Reading specs from /software/gcc-3.4.6-0/pkg/lib/gcc/i386-unknown-freebsd6.1/3.4.6/specs
Configured with: ../gcc-3.4.6/configure --prefix=/software/gcc-3.4.6-0/pkg --disable-dependency-tracking --localstatedir=/var --disable-nls --program-suffix=34 --enable-shared --enable-version-specific-runtime-libs
Thread model: posix
gcc version 3.4.6
/software/gcc-3.4.6-0/pkg/libexec/gcc/i386-unknown-freebsd6.1/3.4.6/cc1 -quiet -v myshell.c -quiet -dumpbase myshell.c -auxbase myshell -version -o /var/tmp//ccVSq3jQ.s
ignoring nonexistent directory "/software/gcc-3.4.6-0/pkg/lib/gcc/i386-unknown-freebsd6.1/3.4.6/../../../../i386-unknown-freebsd6.1/include"
#include "..." search starts here:
#include <...> search starts here:
/usr/local/include
/software/gcc-3.4.6-0/pkg/include
/software/gcc-3.4.6-0/pkg/lib/gcc/i386-unknown-freebsd6.1/3.4.6/include
/usr/include
End of search list.
GNU C version 3.4.6 (i386-unknown-freebsd6.1)
compiled by GNU C version 3.4.6.
GGC heuristics: --param ggc-min-expand=99 --param ggc-min-heapsize=129976
as -o /var/tmp//ccl1Jaqk.o /var/tmp//ccVSq3jQ.s
/software/gcc-3.4.6-0/pkg/libexec/gcc/i386-unknown-freebsd6.1/3.4.6/collect2 -V -dynamic-linker /libexec/ld-elf.so.1 -L/software/gcc-3.4.6-0/pkg/lib/gcc/i386-unknown-freebsd6.1 -o a /usr/lib/crt1.o /usr/lib/crti.o /software/gcc-3.4.6-0/pkg/lib/gcc/i386-unknown-freebsd6.1/3.4.6/crtbegin.o -L/software/gcc-3.4.6-0/pkg/lib/gcc/i386-unknown-freebsd6.1/3.4.6 -L/software/gcc-3.4.6-0/pkg/lib/gcc/i386-unknown-freebsd6.1/3.4.6/../../.. /var/tmp//ccl1Jaqk.o -lreadline -lgcc -lgcc_eh -lc -lgcc -lgcc_eh /software/gcc-3.4.6-0/pkg/lib/gcc/i386-unknown-freebsd6.1/3.4.6/crtend.o /usr/lib/crtn.o
/usr/bin/ld: cannot find -lreadline
GNU ld version 2.15 [FreeBSD] 2004-05-23
Supported emulations:
elf_i386_fbsd
collect2: ld returned 1 exit status
Dies ist der Ausgang, wenn ohne die Option -lreadline kompilieren.
/var/tmp//ccNnucSC.o(.text+0x4f): In function `main':
: undefined reference to `readline'
collect2: ld returned 1 exit status
Ich konnte diesen Fehler bis jetzt nicht beheben. Was fehlt mir entweder in meinem Code oder beim Aufruf von gcc?
Ich vergaß in meiner Frage zu erwähnen, dass die Bibliothek tatsächlich korrekt installiert ist und unter dem Pfad __ */usr/local/include * __ befindet. – XBigTK13X
Ja, ich sehe aus Ihrer Antwort, dass es in/usr/local/lib installiert wurde, was etwas überraschend nicht in Ihrem Standard-Bibliothekspfad enthalten war (normalerweise wird/usr/local zuerst geprüft). –