Can't link libreadline on Ubuntu 14.04

this may be a very stupid error, but can't find any reference in the web.

I try to compile this bare minimum readline example:

#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); }
}

and got this:

$>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

The same code compiles perfect on my notebook Ubuntu 10.04.

also tryed:

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

or

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

and several other variants with -m64 or --static

I have installed libreadline6-dev and libreadline5-dev.

Thanks in advance.

LALO

1 Answer

Put your arguments for the linker after instead of before your other arguments to 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 -lreadlineek@Ilex:~/source$ ./a.out
enter text>foo
text: foo ^C
1

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like