我正在学习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”等的使用位置
答案 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