请帮我编译这个C程序? [Linux的]

时间:2016-02-14 16:39:00

标签: c linux

我现在正在使用Linux,并尝试通过gcc编译它但是......

这是我真正简单的代码:

#include <stdio.h>

int main(){
  printf("Hello world\n");
  return 0;
}

这是非常奇怪的输出:

./try.c: line 3: syntax error near unexpected token `('
./try.c: line 3: `int main(){'

为什么会这样?

我已经尝试了正确的编译方式,例如:

  1. gcc file_name.c -o file_name以及其他类型的编译方式
  2. chmod +rwx file_name.c
  3. ./file_name.c
  4. 但我仍然得到了那个结果,为什么?

3 个答案:

答案 0 :(得分:1)

您正在尝试执行 .c 文件,从要执行的文件名中删除尾随的 .c

像这样:

  1. gcc -Wall -Wextra -pedantic -Werror -o executable file_name.c
  2. 您不应该让它可执行,它应该已经可执行,因为编译器会这样做。
  3. ./executable
  4. 如您所见,我已将一些参数传递给 gcc ,以帮助诊断问题,有时这些问题是由于您缺乏知识而导致的,有些时候是因为您编写代码很快就错过了一些细节。所以使用它们很好(虽然编译速度较慢,但​​如果你有一台好的和快速的机器并不重要,那么代码中的问题确实很重要)。

    这些标志的含义如下

    1. -Wall启用所有警告。 确实有些未启用,但大多数都是。
    2. -Wextra启用额外警告。
    3. -pedantic使编译器变得迂腐,即严格遵守所需的(此版本的gcc 默认值)标准。
    4. -Werror请注意警告是错误
    5. 另外,如果您看到错误说明,您可能已经猜到了这一点

      ./try.c: line 3: syntax error near unexpected token `('
      ./try.c: line 3: `int main(){'
      

      正如您所看到的,shell正在尝试执行源代码,就好像它是一个shell脚本一样,因此您可以立即注意到这不是 gcc 生成的可执行文件,然后您会注意到文件名中的 .c

答案 1 :(得分:1)

您必须先编译代码。

请按照以下步骤操作。

gcc try.c -o try.out

编译代码。 -o选项用于为将要生成的可执行文件提供自定义名称。

然后,您可以通过键入

来运行它
./try.out

运行可执行文件。

请注意,您可以使用许多命令行选项来获取有关代码的信息并添加更多功能。有关详细信息,请参阅this页面。

答案 2 :(得分:0)

尝试

directory

编译代码并运行它。请阅读gcc的手册页,有许多美食可供观看(额外检查等)