我现在正在使用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(){'
为什么会这样?
我已经尝试了正确的编译方式,例如:
gcc file_name.c -o file_name
以及其他类型的编译方式chmod +rwx file_name.c
./file_name.c
但我仍然得到了那个结果,为什么?
答案 0 :(得分:1)
您正在尝试执行 .c 文件,从要执行的文件名中删除尾随的 .c 。
像这样:
gcc -Wall -Wextra -pedantic -Werror -o executable file_name.c
./executable
如您所见,我已将一些参数传递给 gcc ,以帮助诊断问题,有时这些问题是由于您缺乏知识而导致的,有些时候是因为您编写代码很快就错过了一些细节。所以使用它们很好(虽然编译速度较慢,但如果你有一台好的和快速的机器并不重要,那么代码中的问题确实很重要)。
这些标志的含义如下
-Wall
启用所有警告。 确实有些未启用,但大多数都是。-Wextra
启用额外警告。-pedantic
使编译器变得迂腐,即严格遵守所需的(此版本的gcc 默认值)标准。-Werror
请注意警告是错误。另外,如果您看到错误说明,您可能已经猜到了这一点
./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的手册页,有许多美食可供观看(额外检查等)