0

这是一个 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()'

可能很简单,但我不明白出了什么问题。

4

6 回答 6

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)将可执行文件视为脚本,并尝试执行它。要做的另一件事是从源文件中删除可执行权限,然后您将无法运行它。

于 2013-01-24T05:07:18.893 回答
0

make firsty.c根本没有做任何事情。试试吧make firsty,然后./firsty

于 2013-01-24T05:16:46.430 回答
0

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

gcc firsty.c -o firstly

然后您将在同一目录中获取可执行文件,并且您可以将其执行为

./firstly
于 2013-01-24T05:18:37.753 回答
0

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

于 2013-01-24T05:24:04.247 回答
0

尝试首先制作,它会工作并首先制作一个带有名称的可执行文件。

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

于 2013-01-24T07:19:33.660 回答
0

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

 make firsty 

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

于 2013-01-24T11:08:03.320 回答