On linux ubuntu 16 32bit,DrPaulcarter汇编语言教程,未定义引用错误

On linux ubuntu 16 32bit, DrPaulcarter assembly language tutorial, undefined reference error

我是汇编语言的新手,所以我正在关注 Dr.Paul Carter 的 pcasm 教程( http://pacman128.github.io/pcasm/ ).

完全是 pdf 文件(http://pacman128.github.io/static/pcasm-book.pdf) 第 33 页,和书的第 23 页

我从该站点下载了 Linux 示例 (http://pacman128.github.io/static/linux-ex.zip)

在终端我输入

  1. nasm -f coff first.asm
  2. gcc -c driver.c
  3. nasm -f coff asm_io.o
  4. gcc -o first driver.o first.o asm_io.o

但是它返回了它

问题出在哪里?

(截图的命令-lc无所谓,没有-lc也是一样)

我发现错误来自 asm_io.asm。您应该必须修改 asm_io.asm 或检查 define 行。

对于 Linux asm_io 不适用于 64 位。您必须创建 32 位程序。使用 -m32 选项将 C 文件编译为 32 位。您还必须 assemble asm_io.asm 使用特殊定义 -d ELF_TYPE 才能在 Linux 上工作。不要使用 coff。这样的命令应该有效:

nasm -f elf -d ELF_TYPE asm_io.asm
nasm -f elf first.asm 
gcc -m32 -c driver.c
gcc -m32 -o first driver.o first.o asm_io.o

如果你真的是 32 位 Linux 你可以省略 -m32