Comment puis-je correctement référence à la bibliothèque GNU readline de scanner d'entrée de la borne?
Je tente de compiler le code C qui utilise les éléments suivants à l'intérieur de GNU readline.
#include <readline/readline.h>;
#include <readline/history.h>;
J'ai essayé de changer les <> à "" et de la compilation à la fois avec et sans le -lreadline options. Rien ne semble fonctionner. Lors de la compilation sans -lreadline sous gcc résultats dans la suite générée lors de la compilation (en clair):
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
C'est la sortie lors de la compilation sans -lreadline option.
/var/tmp//ccNnucSC.o(.text+0x4f): In function `main':
: undefined reference to `readline'
collect2: ld returned 1 exit status
J'ai été incapable de résoudre cette erreur jusqu'à ce point. Ce qui me manque dans mon code ou lors de l'ouverture de gcc?
OriginalL'auteur XBigTK13X | 2010-09-23
Vous devez vous connecter pour publier un commentaire.
Lors de la compilation sous UNIX, j'ai trouvé il est nécessaire de référencer correctement le GNU readline bibliothèque:
Cela garantit que le compilateur trouve le readline les répertoires et les fichiers lors de la compilation et édition de liens.
OriginalL'auteur XBigTK13X
Il semble que vous n'avez pas le libreadline bibliothèques de développement installé. Sur Debian (y compris les ports de FreeBSD) la bibliothèque est située dans /lib et le développement des bibliothèques (que vous pouviez lien vers) sont dans /usr/lib.
En outre, vous avez des points-virgules après votre comprend, qui vous ne devriez pas avoir.
Ouais, je vois de votre réponse qu'il a été installé dans /usr/local/lib qui, étonnamment, n'est pas incluse dans votre bibliothèque par défaut du chemin d'accès (généralement /usr/local est d'abord vérifié).
OriginalL'auteur Niki Yoshiuchi