【问题标题】:How to compile C file through Terminal如何通过终端编译 C 文件
【发布时间】:2017-02-06 19:46:04
【问题描述】:

我正在尝试编译保存在计算机上的 C 文件,并尝试在 Mac OS X El Capitan 上使用终端编译该文件,方法是输入 gcc - g -wall -werror -o getit.out -std=c11 getit.c,但我一直收到此错误说明:

    Sandra$ gcc -g -wall -werror -o getit.out -std=c11 getit.c
    clang: error: unknown argument: '-wall'
    clang: error: unknown argument: '-werror'
    clang: error: -E or -x required when input is from standard input
    clang: error: no such file or directory: 'g'

我已经下载并安装了 Xcode,但我不确定为什么会出现此错误。如果有人能提供见解,将不胜感激。谢谢!

编辑:

正如@md xf 所说,我试过了 gcc -g -Wall -Werror -o getit.out -std=c11 getit.c

但我仍然收到错误提示

clang: error: -E or -x required when input is from standard input
clang: error: no such file or directory: 'g'

**忘记在我的原始帖子中列出我的所有错误

【问题讨论】:

  • 也许您应该输入gcc -g ... 而不是gcc - g ...。注意-g 之间的空格
  • 如果您从网站复制,请确保复制的文本中没有“隐形”空格。
  • 是的,这是问题的一部分!谢谢@HKTonyLee
  • g 之前的- 告诉编译器输入将切换到标准输入,因此- 之后的任何内容都被视为垃圾。要修复它,请删除 -g 之间的空格。

标签: c macos terminal compiler-errors


【解决方案1】:

据我所知,-Wall-Werror 中的 W 需要大写。大写标志和小写标志将具有两个完全不同的功能。所以你可以把它改写为gcc -Wall -Werror -std=c11 -o getit.out getit.c

响应您的编辑,您也可以尝试:

  1. getit.c 作为您的第一选择
  2. 确保-g (-g) 之间没有空格
  3. 如果不是绝对必要,请删除 -std=c11

您输入的内容似乎与此处显示的内容不同。错误消息使-g 之间似乎有一个空格。

【讨论】:

  • 我尝试了您的输入,但我仍然收到一条错误消息,指出 clang: error: -E or -x required when input is from standard input clang: error: no such file or directory: 'g'
  • @SandraBae 您可以尝试重新排列它,以便您的输入文件是第一个,例如gcc getit.c ...
【解决方案2】:

clang:错误:未知参数:'-wall'

clang:错误:未知参数:'-werror'

-Wall 和 -Werror 中的 W 需要大写。这解释了gcc 显示的上述错误。

clang: 错误:当输入来自标准输入时需要 -E 或 -x

clang:错误:没有这样的文件或目录:'g'

此错误是由于g 标志选项和hypen(-) 之间的空格字符造成的。去掉空格,这个错误就会消失。

编译程序的命令应该是这样的: gcc -Wall -Werror -std=c11 -o getit.out getit.c -g.

【讨论】:

    【解决方案3】:

    请使用如下命令编译C文件

    gcc -g -Wall -Werror -o getit.out -std=c11 getit.c

    【讨论】:

    • 这是编译和链接的命令,即实际构建可执行文件。
    猜你喜欢
    • 2015-11-30
    • 2013-12-18
    • 2019-03-02
    • 2013-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-19
    相关资源
    最近更新 更多