这里有一些非常简单的东西:
我的代码(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 提前致谢!
有人可以向我解释为什么这不起作用吗?提前致谢! :)
最佳答案
如果您使用的是 64 位系统,就会发生这种情况。如果您想创建 32 位程序,请使用 as --32
和 ld -melf_i386
。另请注意,如果你想使用 libc,你应该使用入口点 main
而不是 _start
并使用 gcc -m32
进行编译和链接,这样一切都可以得到正确设置,您就可以避免此类神秘错误。
关于linux - GNU:访问损坏的共享库错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29332156/