使用make的主要简单c程序osx中的语法错误

时间:2013-01-24 05:04:37

标签: c macos

这是一个n00b问题,我看到了一个对我没有帮助的答案。

我正在运行一个用textmate写的简单的c程序(firsty.c):

#include <stdio.h>

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

我在终端中输入了以下结果:

$ make firsty.c
make: Nothing to be done for `firsty.c'.
$ ./firsty.c
./firsty.c: line 3: syntax error near unexpected token `('
./firsty.c: line 3: `int main()'

可能很简单,但我不明白什么是错的。

6 个答案:

答案 0 :(得分:0)

您正在尝试执行源文件。您需要执行希望由make构建的二进制文件。

我不知道你的makefile在做什么,但是如果它像gcc firsty.c那样,默认情况下二进制输出文件将被命名为a.out。使用gcc -o executable_name_here具有不同名称的输出文件(http://gcc.gnu.org/onlinedocs/gcc/Overall-Options.html#Overall-Options)

Unix(此时osx)正在考虑将可执行文件作为脚本,并尝试执行它。另一件事是从源文件中删除可执行权限,然后您将无法运行它。

答案 1 :(得分:0)

make firsty.c根本没有做任何事情。请改为make firsty,然后./firsty

答案 2 :(得分:0)

我认为你还没有创建make命令用来编译给定源文件的任何Makefile ...所以尝试编写一个makefile(http://www.cs.colby.edu/maxwell/courses/tutorials/maketutor/),否则尝试编译为...

gcc firsty.c -o firstly

然后你将获得同一目录中的可执行文件&amp;你可以把它作为

来执行
./firstly

答案 3 :(得分:0)

照顾'#'。当您执行源代码文件时,操作系统可能会使用shell执行它。所以我们得到语法错误。

答案 4 :(得分:0)

尝试make firsty,它会工作,并将首先使用名称生成可执行文件。

如果这不起作用,请尝试make ./firstly。

答案 5 :(得分:0)

请注意,在执行make时,您需要提供文件名,而不是.c 输出文件使用文件名创建,它将搜索相应的.c文件进行编译。 在你的情况下

 make firsty 

这将查找要编译的firsty.c并创建名为firsty的输出文件。