为什么我无法使用 gcc 生成 "Hello World" 可执行文件?

Why am I not able to produce a "Hello World" executable using gcc?

我正在尝试使用 GCC(基于 clang 和独立的 GCC-4.9.2)编译我的第一个 "Hello World" 应用程序,但没有成功:

OS 版本是 OS X Yosemite 10.10.2.

我正在使用以下代码 (main.c):

#include <stdlib.h>
#include <stdio.h>

int main (){
    printf("Hello World!");
    getchar();
    return 0;
}

然后我在终端中使用命令编译它(XCode 附带的 clang):

gcc -o hello -c main.c

因此,在 运行 编译 hello 文件时出现以下错误:

MBP-Andrii:cTest andrii$ gcc -o hello -c main.c
MBP-Andrii:cTest andrii$ 你好
-bash: /Users/andrii/avrTest/cTest/hello: 权限被拒绝

如果我将 hello 文件的权限更改为 777 并再次出现新错误:

MBP-Andrii:cTest andrii$ chmod 777 你好
MBP-Andrii:cTest andrii$ 你好
杀死:9
MBP-Andrii:c测试andrii$

同样的事情发生在独立的 GCC-4.9.2 上。

我想这可能与输出二进制格式或编译器缺少一些标志有关。

尝试通过键入 ./hello 来执行它

从您用于编译应用程序的命令中删除 -c

-c 告诉编译器只编译 assemble 而不是 link。使用 -c.

时,您实际上并未创建应用程序

GCC Manual

-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.