Não é possível ligar a libreadline no Ubuntu 14.04

5

isso pode ser um erro muito estúpido, mas não consegue encontrar nenhuma referência na web.

Eu tento compilar este exemplo mínimo de readline:

#include <stdio.h>
#include <malloc.h>
#include <readline/readline.h>

void main(void){

char *line;

while( 1==1 ){
    line=readline("enter text>");
    printf("text: %s <\n",line);
    free(line);
    }
}

e tenho isso:

$>cc   -lreadline  read_test.c
/tmp/cc6JYBvf.o: In function 'main':
read_test.c:(.text+0xe): undefined reference to 'readline'
collect2: error: ld returned 1 exit status

O mesmo código compila perfeito no meu notebook Ubuntu 10.04.

também tentou:

cc -L/usr/lib/x86_64-linux-gnu  -lreadline read_test.c

ou

cc -L/usr/lib/x86_64-linux-gnu  -lreadline -lncurses read_test.c

e várias outras variantes com -m64 ou --static

Eu instalei libreadline6-dev e libreadline5-dev.

Obrigado antecipadamente.

LALO

    
por Eduardo Spremolla 14.09.2014 / 17:06

1 resposta

3

Coloque seus argumentos para o linker depois ao invés de antes seus outros argumentos para o gcc:

ek@Ilex:~/source$ gcc -lreadline read_test.c
/tmp/cc1IuVNQ.o: In function 'main':
read_test.c:(.text+0xe): undefined reference to 'readline'
collect2: error: ld returned 1 exit status
ek@Ilex:~/source$ gcc read_test.c -lreadline
ek@Ilex:~/source$ ./a.out
enter text>foo
text: foo ^C
    
por Eliah Kagan 14.09.2014 / 17:29