在编译我的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
我不明白这个错误。它可以用我的系统架构做点什么吗?
答案 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
,您需要使用正确的选项重建(假设您有源代码)。