使用gcc编译程序时出错

时间:2014-04-05 17:51:42

标签: nasm

在编译我的nasm程序时,命令nasm -felf prgname.asm工作正常,但是当我使用gcc命令gcc -o prgname prgname.o driver.c asm_io.o时,它会给我一个错误

file format not recognized; treating as linker script
/usr/bin/ld:asm_io.o:1: syntax error
collect2: ld returned 1 exit status

我不明白这个错误。它可以用我的系统架构做点什么吗?

1 个答案:

答案 0 :(得分:0)

根据错误输出,导致问题的prgname.o文件不是asm_io.o文件。根据输出:

file format not recognized; treating as linker script
/usr/bin/ld:asm_io.o:1: syntax error

您可以看到它将某些文件视为文本链接描述文件,然后在asm_io.o中抱怨语法错误。

由于您倾向于从 textual 源代码而不是二进制目标文件中获取语法错误,因此将文件视为链接描述文件是一个相当安全的选择。 asm_io.o一个。

所以你应该把精力集中在那里。首先要检查两个文件以查看它们的类型:

file prgname.o asm_io.o

我包括第一个不是因为我认为这是错误的,但是因为,如果它是正确的,它会指示第二个应该是什么。

您也可以将asm_io.o完全从编译命令中删除。您可能会收到unresolved symbol个错误,但它至少会证明哪个文件导致了问题。

一旦确定问题 asm_io.o,您需要使用正确的选项重建(假设您有源代码)。