LINUX.ORG.RU

Как правильно собирать код с include'ами в nasm?

 , , ,


1

2

Добрый день. У нас началось изучение assembler на примере nasm. Есть хорошая IDE под названием SASM, в её составе также идёт «библиотека» io.inc (подробнее тут: https://dman95.github.io/SASM/). Мне было бы привычнее писать в vim, но я сталкиваюсь с проблемой при попытке получить программу с подключённой io.inc. Мой код:

%include 'io.inc'

section .text
    global CMAIN
CMAIN:
    ...
    ...

    PRINT_DEC 4, eax
    PRINT_DEC 4, ebx

    xor eax,eax
    RET
, макрос PRINT_DEC определён в io.inc. При сборке через SASM всё хорошо (вот окно настроек с его опциями сборки: https://i.imgur.com/QT8Jmme.png). Я пытаюсь сделать следующее: положил io.inc туда же, где файл с кодом,
nasm -g -f elf32 1.asm -o 1.o
nasm -g -f elf32 io.inc -o io.o
gcc 1.o io.o -g -o 1 -m32
Получаю ошибки:
1.o:1.asm:21: undefined reference to `get_stdout'
1.o:1.asm:22: undefined reference to `get_stdout'
collect2: error: ld returned 1 exit status
21 и 22 - строки с PRINT_DEC. Подскажите, пожалуйста, что я делаю не так, и как надо. Заранее спасибо.



Последнее исправление: Norong (всего исправлений: 1)
Ответ на: комментарий от kawaii_neko

Увидел, что туда ещё компонуется объектный файл одного сишного исходника. Добавил, заработало. Спасибо!

Norong
() автор топика

Есть хорошая IDE...

Скрипач не нужен.

Redf
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.