【发布时间】:2011-10-08 21:58:49
【问题描述】:
我正在尝试在英特尔架构的 Linux 程序集中编译一个小程序。我想使用 C 库的一些功能,但它没有链接。
这是我的汇编程序:
.text
.globl main
main:
pushl $512
call malloc
addl $4, %esp
mov $1, %eax
mov $0, %ebx
int $0x80
我正在编译
as --32 -o output.o output.asm
在这里,一切顺利。然后当我与
链接时ld -static -m elf_i386 -o a.out output.o -lc
,我收到了这些错误:
(.text+0x1b8): 未定义引用
_Unwind_Resume' /usr/lib32/libc.a(iofclose.o):(.eh_frame+0x167): undefined reference to__gcc_personality_v0' /usr/lib32/libc.a(ioflush.o): 在函数中fflush': (.text+0xd7): undefined reference to_Unwind_Resume' /usr/lib32/libc.a(ioflush.o):(.eh_frame+0xdf): 未定义的引用__gcc_personality_v0' /usr/lib32/libc.a(iofputs.o): In functionfputs': (.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 链接,但在我的计算机上找不到该库...
有人有想法吗?
【问题讨论】:
-
尝试使用 gcc 而不是 ld 链接