Вот мой код asm:
global _start
extern exit
section .text
_start:
mov ebx, 10
call exit
команда компиляции:
nasm -f elf32 hello.asm
команда ссылки:
ld -m elf_i386 -L /lib/ld-linux.so.2 hello.o
но это дает мне следующий вывод:
hello.o: в функции _start': hello.asm:(.text+0x6): undefined
reference to
выход '
Я пробовал также:
ld -m elf_i386 -L /lib/x86_64-linux-gnu/libc.so.6 hello.o
Когда я использую gcc, его свойство compile, но я бы хотел использовать ld напрямую.
Обновление
global _start
extern _exit
section .text
_start:
mov ebx, 10
call _exit
Команда:
nasm -f elf32 hello.asm
ld -m elf_i386 -lc -o hello.out hello.o
Он хорошо связывается, но когда я хочу запустить бинарный файл, например:
./hello.out Я получаю сообщение об ошибке:
bash: ./hello.out : No such file or directory.
Когда я использую gcc, я не могу запустить двоичный файл таким же образом, но он работает правильно.