使用ld对“退出” Linux Asm的未定义引用

时间:2018-11-15 10:38:45

标签: linux assembly linker nasm ld

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

0 个答案:

没有答案