优化设置

Optimization setting

在 c 中,我们可以通过启用标志 -O 启用优化设置以启用所有可能的优化,-O0 将禁用所有启用的优化。

我的问题是这个标志是给谁的消息?意味着编译器还是内核?

O 标志被传递给编译器,而不是内核。内核与编译无关。这些标志决定了优化器将如何积极地完成它的工作。一个实际的例子是 clang -O3 WannabeObjectFile.c.

编辑:我搞错了,小写的o标志是用来指定输出文件的。大写O用于指定优化级别。

您提供的所有命令行参数都由编译器(或编译器驱动程序,在某些编译器如 gcc 的情况下)解释。然后它们可能会被传递给编译器(或编译器驱动程序)执行以完成特定任务的其他程序。

顺便说一下,-o 不是很多编译器的优化设置。它通常指定输出文件的名称。例如,gcc -c file.c -o anotherfile.o 编译器 file.c 并生成一个名为 anotherfile.o.

的目标文件

优化设置通常是-O(例如-O3)。注意大写 O。它不一定会传递给 compiler/driver 执行的每个程序。例如,gcc -O3 file.c -o program 使用优化设置 -O3 编译 file.c 并生成名为 program 的输出可执行文件。为此,将调用链接器以及各种编译阶段(预处理器、编译器本身等)。 -O3 通常不会传递给链接器 - 这是链接器通常不理解的编译选项。