这是我的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时,无法以相同的方式运行二进制文件,但是它可以正确执行。