Как вызвать библиотеку c из ассемблерного кода в Linux?

Я пытаюсь скомпилировать небольшую программу на сборке 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, но на моем компьютере библиотека не найдена ...

Есть у кого-нибудь идеи?

7
задан Baptiste Wicht 19 July 2011 в 21:16
поделиться