这里有一些超级简单的东西:
我的代码(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 提前致谢!
有人可以向我解释为什么这不起作用吗?提前致谢! :)
答案 0 :(得分:1)
如果您使用的是64位系统,则会发生这种情况。如果要创建32位程序,请使用as --32
和ld -melf_i386
。另请注意,如果要使用libc,则应使用入口点main
而非_start
并使用gcc -m32
进行编译和链接,以便正确设置所有内容并避免此类神秘错误。< / p>