什么是GCC的通行证和被调用的程序?

时间:2012-02-07 00:23:47

标签: gcc code-generation compiler-theory

它来自another questiongcc调用的程序和部分是什么(特别是在编译CC++时),以便有人可能会设计一些方案为各种自定义编码目的截取和改变流程?

2 个答案:

答案 0 :(得分:3)

编译器二进制文件是“编译器驱动程序”(即gcc),编译器本身也兼作预处理器(cc1cc1plus)。它还调用汇编程序(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