Bap*_*cht 7 c linux assembly linker
我正在尝试在英特尔架构上的Linux程序集中编译一个小程序.我想使用C库的一些功能,但它没有链接.
这是我的装配程序:
.text
.globl main
main:
pushl $512
call malloc
addl $4, %esp
mov $1, %eax
mov $0, %ebx
int $0x80
Run Code Online (Sandbox Code Playgroud)
我正在编译
as --32 -o output.o output.asm
Run Code Online (Sandbox Code Playgroud)
一切顺利.然后当我联系时
ld -static -m elf_i386 -o a.out output.o -lc
Run Code Online (Sandbox Code Playgroud)
,我收到了这些错误:
(.text + 0x1b8):对
_Unwind_Resume' /usr/lib32/libc.a(iofclose.o):(.eh_frame+0x167): undefined reference to
__gcc_personality_v0'/ usr/lib32/libc.a(iofflush.o)的未定义引用:在函数fflush': (.text+0xd7): undefined reference to
_Unwind_Resume'/ usr/lib32/libc.a(iofflush.o):(.eh_frame+0xdf ) :对__gcc_personality_v0' /usr/lib32/libc.a(iofputs.o): In function
fputs的未定义引用 ':(.text + 0x108):对_Unwind_Resume' /usr/lib32/libc.a(iofputs.o):(.eh_frame+0xdf): undefined reference to
__gcc_personality_v0'/ usr/lib32/libc.a(iofwrite.o)的未定义引用:在函数`fwrite'中:
(我还有其他错误,但我认为这足以看出问题了)
我看到一些解决方案表明我应该与-lgcc链接,但在我的计算机上找不到库...
有人有想法吗?
glibc需要某些初始化代码与可执行文件静态链接。最简单的方法是使用gcc进行链接:
gcc -static -o a.out output.o
Run Code Online (Sandbox Code Playgroud)
您也可以通过传递-v
给来确切地了解所链接的内容gcc
。
归档时间: |
|
查看次数: |
2811 次 |
最近记录: |