Gcc 如何制作一个基本的C生成文件?

Gcc 如何制作一个基本的C生成文件?,gcc,makefile,Gcc,Makefile,我正在尝试用c语言为hello world程序制作一个简单的Makefile 目前,我使用以下工具进行编译: gcc -Wall -std=c99 helloWorld.c 在Makefile中,到目前为止我拥有的是: CC = gcc CFLAGS = -Wall -std=c99 helloWorld.exe: helloWorld.c $(CC) $(CFLAGS) -o helloWorld.exe 另外,第二行中是一个制表符,而不是空格 当我输入make或make--tr

我正在尝试用c语言为hello world程序制作一个简单的Makefile 目前,我使用以下工具进行编译:

gcc -Wall -std=c99 helloWorld.c
在Makefile中,到目前为止我拥有的是:

CC = gcc
CFLAGS = -Wall -std=c99

helloWorld.exe: helloWorld.c
    $(CC) $(CFLAGS) -o helloWorld.exe
另外,第二行中是一个制表符,而不是空格
当我输入make或make--trace时,我得到:

make:**未指定目标,也未找到makefile。停止。

读取。请注意,制表符在-s中很重要(例如,大多数其他系统没有这种历史错误特征)。您的问题和我的答案不显示这些选项卡,但您需要确保它们在那里(这里以几个空格开头的每一行代码实际上应该以单个选项卡字符开头)

错误了。您不能将
helloWorld.c
传递给
gcc

你至少要

 helloWorld.exe: helloWorld.c
     $(CC) $(CFLAGS) -o helloWorld.exe helloWorld.c
你可以(实际上应该)使用
$@
$^
特殊品牌。还要注意内置规则(请尝试
make-p
)。 也许在您的系统上,只有
helloWorld.exe:helloWorld.c
而没有显式操作就足够了。我建议使用适当的规则设置通常的
clean:
目标

如果出现以下情况,您可能希望在
Makefile
中显式设置:

因为您应该询问所有警告和调试信息(因为如果没有要求,
gcc
将不会生成它们)

要调试
Makefile
:请先尝试
make-n
。然后
make--trace
,可能与
-x
一起使用

您会发现许多
Makefile
的示例,例如

在每个版本的
Makefile
之后,请确保清理文件树(使用良好但仍然缺少的
clean
目标,然后使用
makeclean
,或者手动删除任何对象文件和任何可执行文件)

当我输入
make
make--trace
时,我得到:
make:**未指定目标,也未找到makefile。

这意味着您在错误的目录中运行了
make
命令。在运行
之前,使用
pwd
/bin/pwd
检查您的密码。这可能不是你所相信的。还列出其中的文件(在Linux和POSIX上使用
ls
,在MSDOS和Windows上使用
DIR
);至少应该同时看到
Makefile
helloWorld.c

还要检查您的操作是否正确(例如,在POSIX系统上使用
echo$PATH

另外,我对
.exe
后缀感到惊讶。在我的Linux系统上,我不使用也不需要它。

阅读。请注意,制表符在-s中很重要(例如,大多数其他系统没有这种历史错误特征)。您的问题和我的答案不显示这些选项卡,但您需要确保它们在那里(这里以几个空格开头的每一行代码实际上应该以单个选项卡字符开头)

错误了。您不能将
helloWorld.c
传递给
gcc

你至少要

 helloWorld.exe: helloWorld.c
     $(CC) $(CFLAGS) -o helloWorld.exe helloWorld.c
你可以(实际上应该)使用
$@
$^
特殊品牌。还要注意内置规则(请尝试
make-p
)。 也许在您的系统上,只有
helloWorld.exe:helloWorld.c
而没有显式操作就足够了。我建议使用适当的规则设置通常的
clean:
目标

如果出现以下情况,您可能希望在
Makefile
中显式设置:

因为您应该询问所有警告和调试信息(因为如果没有要求,
gcc
将不会生成它们)

要调试
Makefile
:请先尝试
make-n
。然后
make--trace
,可能与
-x
一起使用

您会发现许多
Makefile
的示例,例如

在每个版本的
Makefile
之后,请确保清理文件树(使用良好但仍然缺少的
clean
目标,然后使用
makeclean
,或者手动删除任何对象文件和任何可执行文件)

当我输入
make
make--trace
时,我得到:
make:**未指定目标,也未找到makefile。

这意味着您在错误的目录中运行了
make
命令。在运行
之前,使用
pwd
/bin/pwd
检查您的密码。这可能不是你所相信的。还列出其中的文件(在Linux和POSIX上使用
ls
,在MSDOS和Windows上使用
DIR
);至少应该同时看到
Makefile
helloWorld.c

还要检查您的操作是否正确(例如,在POSIX系统上使用
echo$PATH


另外,我对
.exe
后缀感到惊讶。在我的Linux系统上,我不使用也不需要它。

您的Makefile存在一些问题,但这些问题在下面的答案中得到了解决。我只是想确保您知道:
$(CC)
前面的空格是一个字符。如果您是
make
…的新手,并且一些编辑器会用空格悄悄地替换选项卡,那么很容易忽略这一点。编辑您的问题以显示
make--trace
和/或
make
的输出make文件的实际名称是什么?运行make时您是否在该目录中?make文件的名称是Makefile,它与我正在编译的c文件位于同一目录中,是的,我也在该目录中。您在哪个操作系统上执行此操作?我希望您使用Linux或某些POSIX系统您的Makefile存在一些问题,但这些问题在下面的答案中得到了解决。我只是想确保您知道:
$(CC)
前面的空格是一个字符。如果你是
make
…的新手,并且一些编辑器会用空格悄悄地替换选项卡,那么你很容易忽略这一点。编辑你的问题以显示
make--trace
和/或
make
的输出你的ma的实际名称是什么
CFLAGS= -Wall -g