不了解“ gcc -c file.c”和“ gcc -o file.c”命令之间的区别

时间:2019-12-17 13:34:30

标签: linux gcc compilation execution

命令:

`gcc -c -Wall hello.c`

这是错误:调用 ./ hello.o

bash: ./hello.o: cannot execute binary file: Exec format error

需要帮助..

2 个答案:

答案 0 :(得分:0)

.o是目标文件,不是可执行文件。这是一个中间步骤。 -c选项只是说要执行此步骤。您仍然必须将该目标文件链接到可执行文件中。

答案 1 :(得分:0)

这些是您要的选项

  

-c

     

编译或汇编源文件,但不链接。只是没有完成链接阶段。最终输出是以每个源文件的目标文件的形式。

     

默认情况下,源文件的目标文件名是通过将后缀“ .c”,“。i”,“。s”等替换为“ .o”而制成的。

不需要编译或汇编的无法识别的输入文件将被忽略。

  

-o file

     

将输出放置在文件文件中。这适用于所产生的任何类型的输出,无论是可执行文件,目标文件,汇编文件还是经过预处理的C代码。

     

如果未指定-o,则默认值为将可执行文件放置在a.out中,将source.suffix的目标文件放置在source.o中,将其汇编器文件放置在source.s中,将预编译的头文件放置在source中。 suffix.gch,以及所有在标准输出中预处理的C源代码。

使用第一个选项,您将拥有一个目标文件,而不是可执行文件,因此您将无法执行它