Linux 如何将readline库链接到对象文件?

Linux 如何将readline库链接到对象文件?,linux,assembly,x86,readline,fasm,Linux,Assembly,X86,Readline,Fasm,我试图在用FASM编写的程序中使用GNU readline库。这是我的汇编代码: format elf64 public _start extrn readline section ".text" executable _start: push prompt call readline jmp _start section ".data" prompt db ">> ", 0 然后我编译并链接它,如下所示: $ fasm test.asm

我试图在用FASM编写的程序中使用GNU readline库。这是我的汇编代码:

format elf64

public _start

extrn readline

section ".text" executable
_start:
    push prompt
    call readline
    jmp  _start

section ".data"
    prompt db ">> ", 0
然后我编译并链接它,如下所示:

$ fasm test.asm
$ ld -lreadline test.o -o test
但是,当我尝试执行
/test
时,bash会给出以下错误消息:

bash: ./test: No such file or directory

目录中存在
测试
可执行文件。发生了什么?我没有正确链接
libreadline
库吗?

当我在64位系统上编译32位代码时,有一次发生了这种情况。您必须安装一些额外的32位开发工具和库(如适当的libc变体),以便32位二进制文件也可以被识别为可执行文件。

我正在使用Ubuntu 13.04。你认为我需要安装哪些软件包?@AaditMShah好吧,我一时想不起来,我上次使用Ubuntu已经很久了。我已经在32位代码中看到了这一点<默认情况下,code>ld尝试使用
/lib/ld linux.so.1
作为解释器/动态链接器。。。不存在(在我的系统上)。(您可以在文件的纯文本转储中看到这一点)解决方案是
ld-I/lib/ld linux.so.2…
--dynamic linker
-I
的别名,如果您喜欢更多类型的话)。系统上的位置可能不同,但我认为这就是您遇到的问题。令人困惑,不是吗?可能需要指定
-l readline
(也可能需要指定libreadline的
l路径)