这是一个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()'
可能很简单,但我不明白什么是错的。
答案 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的输出文件。