无法在 Ubuntu 14.04 上链接 libreadline

Edu*_*lla 5 libraries dynamic-linking 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);
    }
}
Run Code Online (Sandbox Code Playgroud)

得到了这个:

$>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
Run Code Online (Sandbox Code Playgroud)

相同的代码在我的笔记本 Ubuntu 10.04 上完美编译。

也尝试过:

cc -L/usr/lib/x86_64-linux-gnu  -lreadline read_test.c
Run Code Online (Sandbox Code Playgroud)

或者

cc -L/usr/lib/x86_64-linux-gnu  -lreadline -lncurses read_test.c
Run Code Online (Sandbox Code Playgroud)

和其他几个带有 -m64 或 --static 的变体

我已经安装了 libreadline6-dev 和 libreadline5-dev。

提前致谢。

拉洛

Eli*_*gan 5

将链接器的参数放在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
Run Code Online (Sandbox Code Playgroud)