它来自another question:gcc
调用的程序和部分是什么(特别是在编译C
或C++
时),以便有人可能会设计一些方案为各种自定义编码目的截取和改变流程?
答案 0 :(得分:3)
编译器二进制文件是“编译器驱动程序”(即gcc
),编译器本身也兼作预处理器(cc1
或cc1plus
)。它还调用汇编程序(as
)和链接程序(ld
)。此外,在某些情况下,还有一个名为collect2
的工具可以在链接过程中提供帮助。
如果您想查看中间状态和调用的内容,请执行以下操作:
gcc -save-temps -v .....
如果要查看编译器的优化过程,请使用以下选项:
gcc -fdump-tree-all -fdump-rtl-all ....
为了调试目的,这会产生(模糊地)人类可读的内部状态转储。您可以保存并重新加载到编译器中,这是肯定的,但如果您计划修改编译器的源代码或编写GCC插件,这将非常有用。
答案 1 :(得分:1)
准确观察所谓的程序:
gcc -v main.c
具体步骤由格式为https://gcc.gnu.org/onlinedocs/gcc-4.8.1/gcc/Spec-Files.html
的规范文件确定查看默认值(在GCC中硬编码):
gcc -dumpspecs
在默认值之后运行您自己的spec文件:
gcc -specs=file