Не могу связать libreadline в Ubuntu 14.04
Это может быть очень глупой ошибкой, но не могу найти никакой ссылки в Интернете.
Я пытаюсь скомпилировать этот минимальный пример 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);
}
}
и получил это:
$>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
Тот же код прекрасно компилируется на моем ноутбуке Ubuntu 10.04.
также попробовал:
cc -L/usr/lib/x86_64-linux-gnu -lreadline read_test.c
или же
cc -L/usr/lib/x86_64-linux-gnu -lreadline -lncurses read_test.c
и несколько других вариантов с -m64 или --static
Я установил libreadline6-dev и libreadline5-dev.
Заранее спасибо.
LALO
1 ответ
Решение
Поместите ваши аргументы для компоновщика после, а не перед другими аргументами для 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