GNU:访问损坏的共享库错误

时间:2015-03-29 17:08:01

标签: linux assembly linker x86 gnu

这里有一些超级简单的东西:

我的代码(p1.s):

    .intel_syntax noprefix
.arch i386
.data
poruka:
    .asciz "Zdravo svete!\n"
kraj_poruke:

.equ duzina_poruke, kraj_poruke - poruka

.text
.extern write
.extern exit
.globl _start

_start:
push duzina_poruke
push offset poruka
push 1
call write
add esp, 12

push 0
call exit

.end

我用来汇编和链接文件的命令:

as -o p1.o p1.s
ld -o p1 -dynamic-linker /lib/ld-linux.so.2 p1.o -l c

在这些命令之后,我将p1.s,p1.o和p1文件全部放在我想要的目录中。

我得到的错误:

bash ./p1 : Accessing a corrupted shared library.

为什么呢? :d 提前致谢!

有人可以向我解释为什么这不起作用吗?提前致谢! :)

1 个答案:

答案 0 :(得分:1)

如果您使用的是64位系统,则会发生这种情况。如果要创建32位程序,请使用as --32ld -melf_i386。另请注意,如果要使用libc,则应使用入口点main而非_start并使用gcc -m32进行编译和链接,以便正确设置所有内容并避免此类神秘错误。< / p>