Я пытаюсь скомпилировать небольшую программу на сборке Linux на архитектуре Intel. Я хочу использовать некоторые функции библиотеки 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): undefined ссылка на
_Unwind_Resume ' /usr/lib32/libc.a(iofclose.o):(.eh_frame+0x167): неопределенная ссылка кому:
__ gcc_personality_v0 '/usr/lib32/libc.a(iofflush.o): В функцииfflush ': (.text + 0xd7): неопределенная ссылка на
_Unwind_Resume' /usr/lib32/libc.a(iofflush.o):(.eh_frame+0xdf): неопределенная ссылка на__ gcc_personality_v0 '/usr/lib32/libc.a(iofputs.o): в функции
fputs ': (.text + 0x108): неопределенная ссылка на_Unwind_Resume' /usr/lib32/libc.a(iofputs.o):(.eh_frame+0xdf): неопределенная ссылка на
__ gcc_personality_v0 '/usr/lib32/libc.a(iofwrite.o): в функции `fwrite ':
(У меня есть еще одна ошибка, но я думаю, что этого достаточно, чтобы увидеть проблему)
Я видел некоторые решения, указывающие на то, что я должен установить связь с -lgcc, но на моем компьютере библиотека не найдена ...
Есть у кого-нибудь идеи?