关于Makefile的详细信息

时间:2014-01-30 18:50:25

标签: c makefile

我正在学习Makefiles,当我第一次搜索网页时,我没有得到任何关于我的问题的回复。

实际调用的-o-f-c-g-Wall-I等等(如+, - ,||和&&被称为运算符),所以我将来可以对它们进行正确的搜索,它们会做什么?

我在Makefile中发现这种情况的例子如下所示:

helloworld : helloworld.c
    gcc -o helloworld helloworld.c

hellomake: hellomake.c hellofunc.c
     gcc -o hellomake hellomake.c hellofunc.c -I.

all: myprog.c
     gcc -g -Wall -o myprog myprog.c

(注意:它们是从其他Makefiles示例中获取的部分,仅用于显示“-g”,“ - Wall”等的使用位置

4 个答案:

答案 0 :(得分:2)

这些标志与制作本身无关。 Make是一个运行其他程序的程序。最常见但不仅仅是编译器。

这些标志是编译器的标志(在这种情况下为gcc)。因此,您应该查看编译器的文档,以了解它们的用途。

让你只运行你给它的命令。即使你可以从shell运行编译器,你也不会在文档中找到编译器标志,因为你可以在shell的文档中找到它们。

答案 1 :(得分:1)

你在混淆两件事。所有makefile都会定义一组命令,您可以使用程序Make来缩短命令行调用。因此,在您的示例中,“make helloworld”将在命令行上调用“helloworld.c gcc -o helloworld helloworld.c”,其中“make all”将调用“myprog.c gcc -g -Wall -o myprog myprog”。 C”。另一方面,程序gcc具有不同的命令行参数(例如-o),它告诉程序以某种方式运行。例如,-Wall告诉它输出所有警告,即使是微不足道的警告。

答案 2 :(得分:1)

这些是命令行标志。你所指的标志似乎是gcc(你的C编译器)的标志。

Makefile的大部分内容都包含shell命令。 “gcc -g -Wall -o myprog myprog.c”就是一个例子。您可以在shell中键入相同的命令(即:在终端中)以执行相同的操作。做的是找出执行这些命令的正确时间,并且还可以提出通用规则(例如:“这就是我总是将.c文件编译成.o文件的方式”)。

答案 3 :(得分:0)

"-o", "-f", "-c", "-g", "-Wall", "-I",

是编译器的所有选项,与Make无关。阅读编译器手册页。

man gcc
相关问题