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)
在终端我输入
nasm -f coff first.asm
gcc -c driver.c
nasm -f coff asm_io.o
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
我是汇编语言的新手,所以我正在关注 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)
在终端我输入
nasm -f coff first.asm
gcc -c driver.c
nasm -f coff asm_io.o
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