簡體   English   中英

在Linux Ubuntu 16 32位上,DrPaulcarter匯編語言教程,未定義參考錯誤

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

我是匯編語言的新手,所以我正在關注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位。 您還必須使用特殊的define -d ELF_TYPE來匯編asm_io.asm ,以便在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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM