gcc编译的二进制文件给“不能执行二进制文件”

我编译这个程序:

#include <stdio.h> int main() { printf("Hello World!"); return 0; } 

有了这个命令:

  gcc -c "hello.c" -o hello 

当我试图执行你好,我得到

 bash: ./hello: Permission denied 

因为权限

 -rw-r--r-- 1 nathan nathan 856 2010-09-17 23:49 hello 

因为某些原因??

但无论…更改权限,并尝试再次执行后,我得到

 bash: ./hello: cannot execute binary file 

我使用的是gcc(Ubuntu 4.4.3-4ubuntu5)4.4.3

我在这里做错了什么? 这是显而易见的…现在为时已晚,我一直用我疲惫的眼睛试图找出这个简单的问题….

PS我做(有时)在比Hello World更复杂的程序上工作,但gcc正在做这个全面的…

Solutions Collecting From Web of "gcc编译的二进制文件给“不能执行二进制文件”"

-c拿出来。 这是为了制作目标文件,而不是可执行文件。

-c标志告诉它不要链接,所以你有一个目标文件,而不是一个二进制可执行文件。

事实上,如果你运行这个时没有-o标志,你会发现默认的输出文件是hello.o

为了引用(和咯咯),在-c标志上的man输入:

 -c Compile or assemble the source files, but do not link. The linking stage simply is not done. The ultimate output is in the form of an object file for each source file. By default, the object file name for a source file is made by replacing the suffix .c, .i, .s, etc., with .o. Unrecognized input files, not requiring compilation or assembly, are ignored. 

编译: gcc hello.c -o hello