汇编代码编译错误:文件无法识别

时间:2013-07-01 19:52:06

标签: gcc assembly cross-compiling nasm

我正在尝试编译汇编代码。

我使用了命令

nasm -f coff myMergeSort.asm
gcc driver.c myMergeSort.o asm_io.o -o merge

但是我得到了以下错误:

myMergeSort.o: file not recognized: File format not recognized
collect2: error: ld returned 1 exit status

我尝试使用“obj”代替“coff”,但它也给出了类似的错误。

使用“elf”代替“coff”会出现以下错误:

myMergeSort.o: In function `main':
myMergeSort.asm:(.text+0x0): multiple definition of `main'
/tmp/cchbsJLl.o:driver.c:(.text+0x0): first defined here
/tmp/cchbsJLl.o: In function `main':
driver.c:(.text+0xa): undefined reference to `asm_main'
collect2: error: ld returned 1 exit status

我怎么能解决它?

1 个答案:

答案 0 :(得分:0)

在driver.c中你可能会调用asm_main,尝试添加 extern return_type asm_main(Type1 name1,...,Typen namen);

其中return_type被函数的返回类型替换,typei是TYPE 编号i传递的参数。