2014-12-04 105 views
0

我現在使用的是BACKTRACK 5,它幾乎和ubuntu,debian及其32位一樣,而且我已經插入nasm,我去找博士。 paulcarter的彙編語言教程並下載他的示例程序(Linux)。我跑到哪裏樣本程序的目錄,然後執行以下指令nasm array1.o:無法識別的文件:在Linux上無法識別的文件格式32

〜/桌面/ Linux的-EX#NASM -f COFF array1.asm

〜/桌面/ Linux的-EX#gcc的-o陣列1 array1.o array1c.c

array1.o:文件無法識別:無法識別文件格式 collect2:LD返回1退出

以上執行的指令已經在源文件中已經提供情況的意見 我怎樣才能讓這些和後來我自己的程序工作?

+0

是不是'coff'格式更多的Windows事物? – 2014-12-04 06:33:39

+0

使用'nasm -felf array1.asm'或下載[objconv](http://www.agner.org/optimize/#objconv)並執行'objconv -felf32 array1.o' – 2014-12-04 09:09:21

回答

1

Linux內核支持各種二進制格式。 coff是一個特別舊的版本,如果內核仍然支持它,它可能不會在現代發行版中啓用。嘗試-f elf而不是-f coff

+0

正確。 Nasm的'-f coff'是爲D.J. Delorie的32位DOS擴展DJGPP(甚至不包括MS-coff)。 '-f elf'(或'-f elf32' - 同樣的東西)應該就在這裏。 – 2014-12-04 08:19:30