Jak mám správně odkazovat na knihovnu readline GNU skenovat terminálu vstup?

hlasů
7

Snažím se sestavit C kód, který využívá následující uvnitř GNU readline.

#include <readline/readline.h>;
#include <readline/history.h>;

Snažil jsem změnou <> na „“ a kompilace oba sa bez -lreadline možností. Nic se zdá, že funguje. Při sestavování bez -lreadline pod gcc výsledky v následujících generování při kompilaci (verbose):

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

Jedná se o výstup při kompilaci bez -lreadline volby.

/var/tmp//ccNnucSC.o(.text+0x4f): In function `main':
: undefined reference to `readline'
collect2: ld returned 1 exit status

Byl jsem schopen vyřešit tuto chybu až do tohoto bodu. To, co jsem chybí buď v mém kódu, nebo při vyvolání gcc?

Položena 24/09/2010 v 00:06
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
9

Při kompilaci pod UNIX jsem našel následující je nutné správně odkazovat readline GNU knihovny:

gcc code.c -L/usr/local/lib -I/usr/local/include -lreadline

Tím je zajištěno, že kompilátor najde readline adresářů a souborů v průběhu kompilace a propojení.

Odpovězeno 24/09/2010 v 00:26
zdroj uživatelem

hlasů
6

Vypadá to, že nemáte vývojové libreadline nainstalovány knihovny. Na Debianu (včetně portu FreeBSD) je knihovna se nachází v / lib a vývojové knihovny (které byste odkazující na) jsou v / usr / lib.

Navíc máte středníky po vaší obsahuje, což byste neměli mít.

Odpovězeno 24/09/2010 v 00:24
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more