【问题标题】:Why am I not able to produce a "Hello World" executable using gcc?为什么我无法使用 gcc 生成“Hello World”可执行文件?
【发布时间】:2015-03-21 13:01:08
【问题描述】:

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

操作系统版本为 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:cTest andrii$

独立的 GCC-4.9.2 也会发生同样的事情。

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

【问题讨论】:

    标签: c gcc compilation terminal osx-yosemite


    【解决方案1】:

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

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

    GCC Manual

    -c
    

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 同样的错误MBP-Andrii:cTest andrii$ ./helloKilled: 9
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-16
      相关资源
      最近更新 更多