在 c 中,我们可以通过启用标志 -O 来启用优化设置,以启用所有可能的优化,而 -O0 将禁用所有启用的优化。
我的问题是这个标志是给谁的消息?意味着给编译器还是内核?
最佳答案
您提供的所有命令行参数均由编译器(或编译器驱动程序,在某些编译器(例如 gcc)的情况下)解释。然后它们可能会被传递给编译器(或编译器驱动程序)执行的其他程序以完成特定任务。
顺便说一句,-o
并不是很多编译器的优化设置。它通常指定输出文件的名称。例如,gcc -c file.c -o anotherfile.o
编译 file.c
并生成名为 anotherfile.o
的目标文件。
优化设置通常为-O
(例如-O3
)。注意大写的O
。它不一定会传递给编译器/驱动程序执行的每个程序。例如,gcc -O3 file.c -o program
使用优化设置 -O3
编译 file.c
并生成名为 的输出可执行文件>程序
。为此,需要调用链接器以及各种编译阶段(预处理器、编译器本身等)。 -O3
通常不会传递给链接器 - 它是链接器通常不理解的编译选项。
关于c - 优化设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35679772/