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

时间:2015-03-21 13:01:09

标签: c gcc compilation terminal osx-yosemite

我试图编译我的第一个" Hello World"使用GCC(内置clang和独立GCC-4.9.2)的应用程序没有任何成功:

OS版本是OS X Yosemite 10.10.2。

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

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

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

然后我在终端中用命令编译它(clang随XCode一起提供):

gcc -o hello -c main.c

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

MBP-Andrii:cTest andrii$ gcc -o hello -c main.c
MBP-Andrii:cTest andrii$ hello
-bash: /Users/andrii/avrTest/cTest/hello: Permission denied

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

MBP-Andrii:cTest andrii$ chmod 777 hello
MBP-Andrii:cTest andrii$ hello
Killed: 9
MBP-Andrii:cTest andrii$

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

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

2 个答案:

答案 0 :(得分:3)

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

-c告诉编译器只编译和汇编但不链接。使用-c时,您实际上并未创建应用程序。

请参阅GCC Manual

-c
     

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

     

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

     

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

答案 1 :(得分:0)

尝试输入./hello

来执行它