优化设置
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
通常不会传递给链接器 - 这是链接器通常不理解的编译选项。
在 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
通常不会传递给链接器 - 这是链接器通常不理解的编译选项。